Kazalo:

Resnično izziv: 5 korakov
Resnično izziv: 5 korakov

Video: Resnično izziv: 5 korakov

Video: Resnično izziv: 5 korakov
Video: Step Five of Meditation: Withdrawal from the Senses 2024, Julij
Anonim
Image
Image
1. korak: Spajkajte vezje
1. korak: Spajkajte vezje

Sodobni svet od ljudi zahteva, da izstopijo iz fizičnega in živijo v digitalnem.

S pojavom Al in širjenjem tehnologije ljudje zaupajo stroju preveč in verjamejo, da je vedno pravilen.

"Resnično" naj bi pretreslo to lažno zaupanje z ustvarjanjem lažnega testa detektorja laži. Ljudje bodo zlahka verjeli, da resnično deluje, toda če bodo podani lažni odgovori, bo to pretreslo njihovo slepo zaupanje v tehnologijo.

1. korak: 1. korak: Spajkajte vezje

Ker imajo moja dela samo eno luč, je zelo enostavno spajkati. Glavna težava je na začetku, spajkal sem dve svetlobi, vendar nisem takoj pokril dela osvetlitve. Ko se torej dve žici dotakneta skupaj. Kratek čas je.

2. korak: 2. korak: Napišite kodo

p.p1 {marža: 0,0px 0,0px 0,0px 0,0px; višina vrstice: 15,0px; pisava: 12,0px Times; barva: #000000; barva ozadja: #ffffff}

p.p2 {marža: 0,0px 0,0px 0,0px 0,0px; višina vrstice: 15,0px; pisava: 12,0px Times; barva: #000000; barva ozadja: #ffffff; min-height: 14.0px} span.s1 {font-kerning: none}

2. korak: Napišite kodo

/*********************************************************************

To je primer za naše module Bluefruit LE na osnovi nRF52

Danes izberite eno v trgovini adafruit!

Adafruit vlaga čas in sredstva pri zagotavljanju te odprtokodne kode, prosimo, da z nakupom podprete Adafruit in odprtokodno strojno opremo

izdelki Adafruit!

Licenca MIT, za več informacij preverite LICENCE

Vse besedilo zgoraj in spodnji uvodni zaslon morajo biti vključeni v

kakršno koli prerazporeditev

*********************************************************************

/ Ta skica je namenjena uporabi z upravljalnikom NeoPixel

// površina v mobilni aplikaciji Adafruit Bluefruit LE Connect.

/

/ - Zberite in prenesite to skico v pero nRF52

// - Odprite aplikacijo Bluefruit LE Connect

// - Preklopite na pripomoček NeoPixel

// - Kliknite gumb 'connect', da vzpostavite povezavo in

// pošiljamo metapodatke o postavitvi slikovnih pik

// - S pripomočkom NeoPixel posodobite slikovne pike v napravi

/* OPOMBA: Ta skica je zahtevala vsaj različico 1.1.0 Adafruit_Neopixel !!! */

#vključi

#vključi

#vključi

#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"

#define PIN 16 / * Pin, ki se uporablja za pogon NeoPixels * /

#define MAXCOMPONENTS 4

uint8_t *pixelBuffer = NULL;

uint8_t širina = 0;

uint8_t višina = 0;

uint8_t korak;

uint8_t componentsValue;

bool je 400Hz;

uint8_t komponente = 3; // samo 3 in 4 sta veljavni vrednosti

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();

// Storitev BLE

BLEDfu bledfu;

BLEDis bledis;

BLEUart bleuart;

void setup ()

{

Serial.begin (115200);

medtem ko (! Serijska) zakasnitev (10); // za nrf52840 z domačim usb

Serial.println ("Neopixel test Adafruit Bluefruit Neopixel");

Serial.println ("--------------------------------");

Serial.println ();

Serial.println ("Prosimo, povežite se z aplikacijo Bluefruit Connect LE");

// Konfiguriranje neopikslov

neopixel.begin ();

// Init Bluefruit

Bluefruit.begin ();

Bluefruit.setTxPower (4); // Preverite bluefruit.h za podprte vrednosti

Bluefruit.setName ("Bluefruit52");

Bluefruit. Periph.setConnectCallback (connect_callback);

// Zaradi doslednosti je treba najprej dodati OTA DFU, če obstaja

bledfu.begin ();

// Konfiguriranje in zagon informacijske storitve naprave

bledis.setManufacturer ("Adafruit Industries");

bledis.setModel ("Pero modrega sadja52");

bledis.begin ();

// Konfigurirajte in zaženite storitev BLE UART

bleuart.begin ();

// Nastavitev in začetek oglaševanja

startAdv ();

}

void startAdv (void)

{

// Oglaševalni paket

Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);

Bluefruit. Advertising.addTxPower ();

// Vključi 128-bitni uuid bleuart

Bluefruit. Advertising.addService (bleuart);

// Paket sekundarnega odziva na skeniranje (neobvezno)

// Ker v oglaševalskem paketu ni prostora za 'Ime'

Bluefruit. ScanResponse.addName ();

/* Začnite oglaševati

* - Omogočite samodejno oglaševanje, če ni povezave

* - Interval: hiter način = 20 ms, počasen način = 152,5 ms

* - Časovna omejitev za hitri način je 30 sekund

* - Start (časovna omejitev) s časovno omejitvijo = 0 bo oglaševal za vedno (dokler ni povezan)

*

* Za priporočeni interval oglaševanja

*

*/

Bluefruit. Advertising.restartOnDisconnect (true);

Bluefruit. Advertising.setInterval (32, 244); // v enoti 0,625 ms

Bluefruit. Advertising.setFastTimeout (30); // število sekund v hitrem načinu

Bluefruit. Advertising.start (0); // 0 = Ne prenehajte z oglaševanjem po n sekundah

}

void connect_callback (uint16_t conn_handle)

{

// Pridobite sklic na trenutno povezavo

BLEConnection* connection = Bluefruit. Connection (conn_handle);

char centralno_ime [32] = {0};

povezava-> getPeerName (osrednje_ime, velikost (osrednje_ime));

Serial.print ("Povezano z");

Serial.println (centralno_ime);

Serial.println ("Prosimo, izberite zavihek" Neopixels ", kliknite" Connect "in se zabavajte");

}

void loop ()

{

// Odmevni podatki

if (Bluefruit.connected () && bleuart.notifyEnabled ())

{

int ukaz = bleuart.read ();

switch (ukaz) {

case 'V': {// Pridobite različico

commandVersion ();

zlom;

}

case 'S': {// Nastavitvene mere, komponente, korak…

commandSetup ();

zlom;

}

primer 'C': {// Počisti z barvo

commandClearColor ();

zlom;

}

primer 'B': {// Nastavi svetlost

commandSetBrightness ();

zlom;

}

primer 'P': {// Nastavi slikovno piko

commandSetPixel ();

zlom;

}

case 'I': {// Prejemanje nove slike

commandImage ();

zlom;

}

}

}

}

void swapBuffers ()

{

uint8_t *base_addr = pixelBuffer;

int pixelIndex = 0;

for (int j = 0; j <višina; j ++)

{

for (int i = 0; i <širina; i ++) {

if (komponente == 3) {

neopixel.setPixelColor (pixelIndex, neopixel. Color (*base_addr, *(base_addr+1), *(base_addr+2)));

}

drugače {

neopixel.setPixelColor (pixelIndex, neopixel. Color (*base_addr, *(base_addr+1), *(base_addr+2), *(base_addr+3)));

}

base_addr+= komponente;

pixelIndex ++;

}

pixelIndex += korak - širina; // premakni pixelIndex v naslednjo vrstico (upoštevaj korak)

}

neopixel.show ();

}

void commandVersion () {

Serial.println (F ("Ukaz: Preverjanje različice"));

sendResponse (NEOPIXEL_VERSION_STRING);

}

void commandSetup () {

Serial.println (F ("Ukaz: Nastavitev"));

width = bleuart.read ();

višina = bleuart.read ();

stride = bleuart.read ();

componentsValue = bleuart.read ();

is400Hz = bleuart.read ();

neoPixelType pixelType;

pixelType = componentsValue + (is400Hz? NEO_KHZ400: NEO_KHZ800);

komponente = (komponenteVrednost == NEO_RGB || komponenteVrednost == NEO_RBG || komponenteVrednost == NEO_GRB || komponenteVrednost == NEO_GBR || komponenteVrednost == NEO_BRG || komponenteVrednost == NEO_BGR)? 3: 4;

Serial.printf ("\ tsize: %dx %d / n", širina, višina);

Serial.printf ("\ tstride: %d / n", korak);

Serial.printf ("\ tpixelType %d / n", pixelType);

Serial.printf ("\ tkomponente: %d / n", komponente);

if (pixelBuffer! = NULL) {

delete pixelBuffer;

}

uint32_t velikost = širina*višina;

pixelBuffer = nov uint8_t [velikost*komponente];

neopixel.updateLength (velikost);

neopixel.updateType (pixelType);

neopixel.setPin (PIN);

// Končano

sendResponse ("V redu");

}

void commandSetBrightness () {

Serial.println (F ("Ukaz: SetBrightness"));

// Preberite vrednost

uint8_t svetlost = bleuart.read ();

// Nastavitev svetlosti

neopixel.setBrightness (svetlost);

// Osveži slikovne pike

swapBuffers ();

// Končano

sendResponse ("V redu");

}

void commandClearColor () {

Serial.println (F ("Ukaz: ClearColor"));

// branje barve

barva uint8_t [MAXCOMPONENTS];

for (int j = 0; j <komponente;) {

if (bleuart.available ()) {

barva [j] = bleuart.read ();

j ++;

}

}

// Vse LED diode nastavite na barvo

int velikost = širina * višina;

uint8_t *base_addr = pixelBuffer;

for (int i = 0; i <velikost; i ++) {

for (int j = 0; j <komponente; j ++) {

*base_addr = barva [j];

base_addr ++;

}

}

// Zamenjaj medpomnilnike

Serial.println (F ("ClearColor dokončano"));

swapBuffers ();

if (komponente == 3) {

Serial.printf ("\ tclear (%d, %d, %d) n", barva [0], barva [1], barva [2]);

}

drugače {

Serial.printf ("\ tclear (%d, %d, %d, %d) n", barva [0], barva [1], barva [2], barva [3]);

}

// Končano

sendResponse ("V redu");

}

void ukazSetPixel () {

Serial.println (F ("Ukaz: SetPixel"));

// Položaj branja

uint8_t x = bleuart.read ();

uint8_t y = bleuart.read ();

// branje barv

uint32_t pixelOffset = y*širina+x;

uint32_t pixelDataOffset = komponente pixelOffset*;

uint8_t *base_addr = pixelBuffer+pixelDataOffset;

for (int j = 0; j <komponente;) {

if (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

// Nastavitev barv

uint32_t neopixelIndex = y*korak+x;

uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;

barva uint32_t;

if (komponente == 3) {

color = neopixel. Color (*pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2));

Serial.printf ("\ tcolor (%d, %d, %d) n", *pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2));

}

drugače {

color = neopixel. Color (*pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2), *(pixelBufferPointer+3));

Serial.printf ("\ tcolor (%d, %d, %d, %d) n", *pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2), *(pixelBufferPointer+3));

}

neopixel.setPixelColor (neopixelIndex, barvno);

neopixel.show ();

// Končano

sendResponse ("V redu");

}

void commandImage () {

Serial.printf ("Ukaz: slika %dx %d, %d, %d / n", širina, višina, komponente, korak);

// Prejemanje novega medpomnilnika slikovnih pik

int velikost = širina * višina;

uint8_t *base_addr = pixelBuffer;

for (int i = 0; i <velikost; i ++) {

for (int j = 0; j <komponente;) {

if (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

/*

if (komponente == 3) {

uint32_t index = i*komponente;

Serial.printf ("\ tp %d (%d, %d, %d) n", i, pixelBuffer [indeks], pixelBuffer [indeks+1], pixelBuffer [indeks+2]);

}

*/

}

// Zamenjaj medpomnilnike

Serial.println (F ("Slika je prejeta"));

swapBuffers ();

// Končano

sendResponse ("V redu");

}

void sendResponse (char const *odgovor) {

Serial.printf ("Pošlji odgovor: %s / n", odgovor);

bleuart.write (odgovor, strlen (odgovor)*sizeof (char));

}

3. korak: 3. korak: Nakup senčnika

3. korak: Nakup senčnika
3. korak: Nakup senčnika
3. korak: Nakup senčnika
3. korak: Nakup senčnika

Korak 4: Korak 4: Potegnite vse skupaj

Priporočena: