Sisukord:

Tõeline väljakutse: 5 sammu
Tõeline väljakutse: 5 sammu

Video: Tõeline väljakutse: 5 sammu

Video: Tõeline väljakutse: 5 sammu
Video: Kristel Aaslaid saates Suur Komöödiaõhtu 3.hooaja 5.osas 2024, November
Anonim
Image
Image
Samm: jootke vooluring
Samm: jootke vooluring

Kaasaegne maailm nõuab, et inimesed astuksid füüsilisest välja ja elaksid digitaalses keskkonnas.

Al -i väljanägemise ja tehnoloogia leviku tõttu usaldavad inimesed masinat liiga palju ja usuvad, et see on alati õige.

"Tõesti" on mõeldud selle vale usalduse kõigutamiseks võltsitud valedetektori testi loomisega. Inimesed usuvad kergesti, et tõesti töötab, kuid valede vastuste korral kõigutab see nende pimedat usaldust tehnoloogia vastu.

1. samm: 1. samm: jootke vooluring

Kuna minu töödel on ainult üks tuli, on seda väga lihtne joota. Põhiprobleem on alguses, ma jootan kaks valgust, kuid ma ei katnud kohe särituse osa. Nii et kui kaks juhtmeosa puutuvad kokku. See on lühike.

2. samm: 2. samm: kirjutage kood

p.p1 {marginaal: 0.0px 0.0px 0.0px 0.0px; rea kõrgus: 15,0 pikslit; font: 12,0 pikslit korda; värv: #000000; taustavärv: #ffffff}

p.p2 {marginaal: 0.0px 0.0px 0.0px 0.0px; rea kõrgus: 15,0 pikslit; font: 12,0 pikslit korda; värv: #000000; taustavärv: #ffffff; min-kõrgus: 14.0px} span.s1 {font-kerning: none}

Samm: kirjutage kood

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

See on näide meie nRF52 -põhiste Bluefruit LE moodulite kohta

Võta üks täna kätte Adafruit poest!

Adafruit investeerib aega ja ressursse selle avatud lähtekoodi pakkumiseks, palun ostke Adafruit'i ja avatud lähtekoodiga riistvara

tooted firmalt Adafruit!

MIT -litsents, lisateabe saamiseks vaadake Litsentsi

Kogu ülaltoodud tekst ja allpool olev pritsimisekraan peavad olema kaasatud

igasugune ümberjaotamine

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

/ See visand on mõeldud kasutamiseks koos NeoPixeli juhtelemendiga

// pind Adafruit'i Bluefruit LE Connect mobiilirakenduses.

/

/ - Koostage ja visake see visand nRF52 Featherile

// - Avage rakendus Bluefruit LE Connect

// - lülitage utiliidile NeoPixel

// - Ühenduse loomiseks klõpsake nuppu 'Ühenda' ja

// saata metaandmeid pikslite paigutuse kohta

// - kasutage seadme pikslite värskendamiseks utiliiti NeoPixel

/* MÄRKUS. See visand nõudis vähemalt Adafruit_Neopixeli versiooni 1.1.0 !!! */

#kaasake

#kaasake

#kaasake

#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"

#define PIN 16 / * PIN -kood, mida kasutatakse NeoPixelite juhtimiseks * /

#defineeri MAXCOMPONENTS 4

uint8_t *pixelBuffer = NULL;

uint8_t laius = 0;

uint8_t kõrgus = 0;

uint8_t samm;

uint8_t componentsValue;

bool on 400Hz;

uint8_t komponendid = 3; // ainult 3 ja 4 on kehtivad väärtused

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();

// BLE teenus

BLEDfu bledfu;

BLEDis bledis;

BLEUart bleuart;

tühine seadistus ()

{

Seriaalne algus (115200);

samas (! Seeria) viivitus (10); // nrf52840 jaoks, kasutades kohalikku USB -d

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

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

Serial.println ();

Serial.println ("Palun ühendage, kasutades rakendust Bluefruit Connect LE");

// Neopikslite seadistamine

neopixel.begin ();

// Init Bluefruit

Bluefruit.begin ();

Bluefruit.setTxPower (4); // Kontrollige bluefruit.h -st toetatud väärtusi

Bluefruit.setName ("Bluefruit52");

Bluefruit. Periph.setConnectCallback (connect_callback);

// Järjepidevuse huvides tuleks kõigepealt lisada OTA DFU, kui see on olemas

bledfu.begin ();

// Seadme teabeteenuse seadistamine ja käivitamine

bledis.setManufacturer ("Adafruit Industries");

bledis.setModel ("Bluefruit Feather52");

bledis.begin ();

// BLE UART teenuse seadistamine ja käivitamine

bleuart.begin ();

// Seadistage ja alustage reklaami

startAdv ();

}

void startAdv (tühine)

{

// Reklaamipakett

Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);

Bluefruit. Advertising.addTxPower ();

// Kaasa 128-bitine bleuart uuid

Bluefruit. Advertising.addService (bleuart);

// Sekundaarse skannimise vastuse pakett (valikuline)

// Kuna reklaamipaketis pole ruumi nimele

Bluefruit. ScanResponse.addName ();

/* Alusta reklaami

* - lubage automaatne reklaamimine, kui see on lahti ühendatud

* - Intervall: kiire režiim = 20 ms, aeglane režiim = 152,5 ms

* - Kiire režiimi ajalõpp on 30 sekundit

* - Start (timeout) koos timeout = 0 reklaamib igavesti (kuni ühendamiseni)

*

* Soovitatava reklaamivahemiku jaoks

*

*/

Bluefruit. Advertising.restartOnDisconnect (tõene);

Bluefruit. Advertising.setInterval (32, 244); // ühikus 0,625 ms

Bluefruit. Advertising.setFastTimeout (30); // sekundite arv kiirrežiimis

Bluefruit. Advertising.start (0); // 0 = Ärge lõpetage reklaamimist n sekundi pärast

}

void connect_callback (uint16_t conn_handle)

{

// Hankige viide praegusele ühendusele

BLEConnection* ühendus = Bluefruit. Connection (conn_handle);

sümbol kesknimi [32] = {0};

ühendus-> getPeerName (kesknimi, suurus (kesknimi));

Serial.print ("Ühendatud");

Serial.println (kesknimi);

Serial.println ("Palun valige vahekaart" Neopikslid ", klõpsake" Ühenda "ja nautige");

}

tühine tsükkel ()

{

// Kaja sai andmeid

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

{

int käsk = bleuart.read ();

lüliti (käsk) {

juhtum 'V': {// Hangi versioon

commandVersion ();

murda;

}

juhtum 'S': {// Seadistuse mõõtmed, komponendid, samm…

commandSetup ();

murda;

}

juhtum 'C': {// Selge värviga

commandClearColor ();

murda;

}

juhtum 'B': {// Määra heledus

commandSetBrightness ();

murda;

}

juhtum 'P': {// Määra piksel

commandSetPixel ();

murda;

}

juhtum 'I': {// Uue pildi saamine

commandImage ();

murda;

}

}

}

}

void swapBuffers ()

{

uint8_t *base_addr = pixelBuffer;

int pixelIndex = 0;

jaoks (int j = 0; j <kõrgus; j ++)

{

jaoks (int i = 0; i <laius; i ++) {

kui (komponendid == 3) {

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

}

muu {

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

}

base_addr+= komponendid;

pixelIndex ++;

}

pixelIndex += samm - laius; // Teisalda pixelIndex järgmisele reale (arvesta sammuga)

}

neopixel.show ();

}

void commandVersion () {

Serial.println (F ("Käsk: versioonikontroll"));

sendResponse (NEOPIXEL_VERSION_STRING);

}

void commandSetup () {

Serial.println (F ("Käsk: seadistamine"));

laius = bleuart.read ();

kõrgus = bleuart.read ();

samm = bleuart.read ();

komponendidVäärtus = bleuart.read ();

is400Hz = bleuart.read ();

neoPixelType pixelType;

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

komponendid = (komponendidVäärtus == NEO_RGB || komponendidVäärtus == NEO_RBG || komponendidVäärtus == NEO_GRB || komponendidVäärtus == NEO_GBR || komponendidVäärtus == NEO_BRG || komponendidVäärtus == NEO_BGR)? 3: 4;

Serial.printf ("\ tsize: %dx %d / n", laius, kõrgus);

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

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

Serial.printf ("\ tkomponendid: %d / n", komponendid);

kui (pixelBuffer! = NULL) {

kustuta pixelBuffer;

}

uint32_t suurus = laius*kõrgus;

pixelBuffer = uus uint8_t [suurus*komponendid];

neopixel.updateLength (suurus);

neopixel.updateType (pixelType);

neopixel.setPin (PIN);

// Valmis

sendResponse ("OK");

}

void commandSetBrightness () {

Serial.println (F ("Käsk: SetBrightness"));

// Väärtuse lugemine

uint8_t heledus = bleuart.read ();

// Heleduse määramine

neopixel.setBrightness (heledus);

// Värskenda piksleid

swapPuhvrid ();

// Valmis

sendResponse ("OK");

}

tühine käskClearColor () {

Serial.println (F ("Käsk: ClearColor"));

// Loe värvi

uint8_t color [MAXCOMPONENTS];

jaoks (int j = 0; j <komponendid;) {

kui (bleuart.available ()) {

värv [j] = bleuart.read ();

j ++;

}

}

// Määra kõik LED -id värviliseks

int suurus = laius * kõrgus;

uint8_t *base_addr = pixelBuffer;

jaoks (int i = 0; i <suurus; i ++) {

jaoks (int j = 0; j <komponendid; j ++) {

*base_addr = värv [j];

base_addr ++;

}

}

// Vaheta puhvreid

Serial.println (F ("ClearColor valmis"));

swapPuhvrid ();

kui (komponendid == 3) {

Serial.printf ("\ tselge (%d, %d, %d) n", värv [0], värv [1], värv [2]);

}

muu {

Serial.printf ("\ tselge (%d, %d, %d, %d) n", värv [0], värv [1], värv [2], värv [3]);

}

// Valmis

sendResponse ("OK");

}

tühine käskSetPixel () {

Serial.println (F ("Käsk: SetPixel"));

// Lugemisasend

uint8_t x = bleuart.read ();

uint8_t y = bleuart.read ();

// Värvide lugemine

uint32_t pixelOffset = y*laius+x;

uint32_t pixelDataOffset = pixelOffset*komponendid;

uint8_t *base_addr = pixelBuffer+pixelDataOffset;

jaoks (int j = 0; j <komponendid;) {

kui (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

// Määra värvid

uint32_t neopixelIndex = y*samm+x;

uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;

uint32_t värv;

kui (komponendid == 3) {

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

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

}

muu {

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, värv);

neopixel.show ();

// Valmis

sendResponse ("OK");

}

void commandImage () {

Serial.printf ("Käsk: Pilt %dx %d, %d, %d / n", laius, kõrgus, komponendid, samm);

// Uue pikslipuhvri vastuvõtmine

int suurus = laius * kõrgus;

uint8_t *base_addr = pixelBuffer;

jaoks (int i = 0; i <suurus; i ++) {

jaoks (int j = 0; j <komponendid;) {

kui (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

/*

kui (komponendid == 3) {

uint32_t indeks = i*komponendid;

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

}

*/

}

// Vaheta puhvreid

Serial.println (F ("Pilt vastu võetud"));

swapPuhvrid ();

// Valmis

sendResponse ("OK");

}

void sendResponse (char const *response) {

Serial.printf ("Saada vastus: %s / n", vastus);

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

}

3. samm: 3. samm: lambivarju ostmine

Samm: lambivarju ostmine
Samm: lambivarju ostmine
Samm: lambivarju ostmine
Samm: lambivarju ostmine

4. samm: 4. samm: tõmmake see kõik kokku

Soovitan: