Indholdsfortegnelse:

Virkelig udfordring: 5 trin
Virkelig udfordring: 5 trin

Video: Virkelig udfordring: 5 trin

Video: Virkelig udfordring: 5 trin
Video: Безумная идея 2024, Juli
Anonim
Image
Image
Trin 1: Loddet kredsløb
Trin 1: Loddet kredsløb

Den moderne verden kræver, at mennesker træder ud af det fysiske og lever inden for det digitale.

Med udseendet af Al og spredning af teknologi sætter folk for stor tillid til maskinen og tror, at den altid er korrekt.

"Virkelig" er beregnet til at ryste denne falske tillid gennem oprettelsen af en falsk løgnedetektortest. Folk vil let tro, at Really virker, men når der gives falske svar, vil det ryste deres blinde tillid til teknologi.

Trin 1: Trin 1: Loddet kredsløb

Fordi mine værker kun har et enkelt lys, så det er meget let at lodde. Hovedproblemet er i begyndelsen, jeg lodder to lys, men jeg dækkede ikke eksponeringsdelen med det samme. Så når de to ledninger deles sammen. Det kortslutter.

Trin 2: Trin 2: Skriv koden

p.p1 {margin: 0,0px 0,0px 0,0px 0,0px; linjehøjde: 15,0px; skrifttype: 12.0px Times; farve: #000000; baggrundsfarve: #ffffff}

p.p2 {margin: 0,0px 0,0px 0,0px 0,0px; linjehøjde: 15,0px; skrifttype: 12.0px Times; farve: #000000; baggrundsfarve: #ffffff; min-height: 14.0px} span.s1 {font-kerning: none}

Trin 2: Skriv koden

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

Dette er et eksempel på vores nRF52 -baserede Bluefruit LE -moduler

Hent en i dag i adafruit -shoppen!

Adafruit investerer tid og ressourcer ved at levere denne open source -kode, support venligst Adafruit og open-source hardware ved at købe

produkter fra Adafruit!

MIT -licens, tjek LICENS for flere oplysninger

Al tekst ovenfor og stænkskærmen herunder skal inkluderes i

enhver omfordeling

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

/ Denne skitse er beregnet til at blive brugt med NeoPixel -kontrollen

// overflade i Adafruit's Bluefruit LE Connect mobilapplikation.

/

/ - Kompilér og flash denne skitse til nRF52 Feather

// - Åbn Bluefruit LE Connect -appen

// - Skift til værktøjet NeoPixel

// - Klik på knappen 'tilslut' for at oprette en forbindelse og

// send metadataene om pixellayoutet

// - Brug værktøjet NeoPixel til at opdatere pixels på din enhed

/* BEMÆRK: Denne skitse krævede mindst version 1.1.0 af Adafruit_Neopixel !!! */

#omfatte

#omfatte

#omfatte

#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"

#define PIN 16 / * Pin bruges til at køre NeoPixels * /

#define MAXCOMPONENTS 4

uint8_t *pixelBuffer = NULL;

uint8_t bredde = 0;

uint8_t højde = 0;

uint8_t skridt;

uint8_t componentsValue;

bool er 400Hz;

uint8_t komponenter = 3; // kun 3 og 4 er gyldige værdier

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();

// BLE Service

BLEDfu bledfu;

BLEDis bledis;

BLEUart bleuart;

ugyldig opsætning ()

{

Serial.begin (115200);

mens (! Seriel) forsinkelse (10); // til nrf52840 med native usb

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

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

Serial.println ();

Serial.println ("Opret forbindelse via Bluefruit Connect LE -applikationen");

// Config Neopixels

neopixel.begin ();

// Init Bluefrugt

Bluefruit.begin ();

Bluefruit.setTxPower (4); // Tjek bluefruit.h for understøttede værdier

Bluefruit.setName ("Bluefruit52");

Bluefruit. Periph.setConnectCallback (connect_callback);

// For at være konsekvent skal OTA DFU tilføjes først, hvis den findes

bledfu.begin ();

// Konfigurer og start Device Information Service

bledis.setManufacturer ("Adafruit Industries");

bledis.setModel ("Bluefruit Feather52");

bledis.begin ();

// Konfigurer og start BLE UART -service

bleuart.begin ();

// Opsæt og start annoncering

startAdv ();

}

void startAdv (void)

{

// Annoncepakke

Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);

Bluefruit. Advertising.addTxPower ();

// Inkluder bleuart 128-bit uuid

Bluefruit. Advertising.addService (bleuart);

// Sekundær scanningsresponspakke (valgfri)

// Da der ikke er plads til 'Navn' i Annoncepakke

Bluefruit. ScanResponse.addName ();

/* Start annoncering

* - Aktiver automatisk annoncering, hvis den er afbrudt

* - Interval: hurtig tilstand = 20 ms, langsom tilstand = 152,5 ms

* - Timeout for hurtig tilstand er 30 sekunder

* - Start (timeout) med timeout = 0 annoncerer for evigt (indtil tilsluttet)

*

* For anbefalet reklameinterval

*

*/

Bluefruit. Advertising.restartOnDisconnect (true);

Bluefruit. Advertising.setInterval (32, 244); // i enheden på 0,625 ms

Bluefruit. Advertising.setFastTimeout (30); // antal sekunder i hurtig tilstand

Bluefruit. Advertising.start (0); // 0 = Stop ikke annoncering efter n sekunder

}

ugyldig connect_callback (uint16_t conn_handle)

{

// Få referencen til den aktuelle forbindelse

BLEConnection* forbindelse = Bluefruit. Connection (conn_handle);

char central_name [32] = {0};

forbindelse-> getPeerName (centralnavn, størrelse (centralnavn));

Serial.print ("Tilsluttet");

Serial.println (centralnavn);

Serial.println ("Vælg venligst fanen 'Neopixels', klik på 'Opret forbindelse' og hav det sjovt");

}

hulrum ()

{

// Ekko modtaget data

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

{

int kommando = bleuart.read ();

switch (kommando) {

case 'V': {// Hent version

commandVersion ();

pause;

}

case 'S': {// Opsætning af dimensioner, komponenter, skridt …

commandSetup ();

pause;

}

case 'C': {// Klar med farve

commandClearColor ();

pause;

}

case 'B': {// Indstil lysstyrke

commandSetBrightness ();

pause;

}

case 'P': {// Set Pixel

commandSetPixel ();

pause;

}

case 'I': {// Modtag nyt billede

commandImage ();

pause;

}

}

}

}

void swapBuffers ()

{

uint8_t *base_addr = pixelBuffer;

int pixelIndex = 0;

for (int j = 0; j <højde; j ++)

{

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

hvis (komponenter == 3) {

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

}

andet {

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

}

base_addr+= komponenter;

pixelIndex ++;

}

pixelIndex += stride - bredde; // Flyt pixelIndex til den næste række (tag hensyn til skridtet)

}

neopixel.show ();

}

void commandVersion () {

Serial.println (F ("Kommando: Versionskontrol"));

sendResponse (NEOPIXEL_VERSION_STRING);

}

void commandSetup () {

Serial.println (F ("Kommando: Opsætning"));

bredde = bleuart.read ();

højde = bleuart.read ();

stride = bleuart.read ();

componentsValue = bleuart.read ();

is400Hz = bleuart.read ();

neoPixelType pixelType;

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

komponenter = (komponenterVærdi == NEO_RGB || komponenterVærdi == NEO_RBG || komponenterVærdi == NEO_GRB || komponenterVærdi == NEO_GBR || komponenterVærdi == NEO_BRG || komponenterVærdi == NEO_BGR)? 3: 4;

Serial.printf ("\ tsize: %dx %d / n", bredde, højde);

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

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

Serial.printf ("\ tkomponenter: %d / n", komponenter);

hvis (pixelBuffer! = NULL) {

slet pixelBuffer;

}

uint32_t størrelse = bredde*højde;

pixelBuffer = ny uint8_t [størrelse*komponenter];

neopixel.updateLength (størrelse);

neopixel.updateType (pixelType);

neopixel.setPin (PIN);

// Færdig

sendResponse ("OK");

}

void commandSetBrightness () {

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

// Læs værdi

uint8_t lysstyrke = bleuart.read ();

// Indstil lysstyrke

neopixel.setBrightness (lysstyrke);

// Opdater pixels

swapBuffers ();

// Færdig

sendResponse ("OK");

}

void commandClearColor () {

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

// Læs farve

uint8_t farve [MAXCOMPONENTS];

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

hvis (bleuart.available ()) {

farve [j] = bleuart.read ();

j ++;

}

}

// Indstil alle lysdioder til farve

int størrelse = bredde * højde;

uint8_t *base_addr = pixelBuffer;

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

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

*base_addr = farve [j];

base_addr ++;

}

}

// Skift buffere

Serial.println (F ("ClearColor udført"));

swapBuffers ();

hvis (komponenter == 3) {

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

}

andet {

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

}

// Færdig

sendResponse ("OK");

}

void commandSetPixel () {

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

// Læs position

uint8_t x = bleuart.read ();

uint8_t y = bleuart.read ();

// Læs farver

uint32_t pixelOffset = y*bredde+x;

uint32_t pixelDataOffset = pixelOffset*komponenter;

uint8_t *base_addr = pixelBuffer+pixelDataOffset;

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

hvis (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

// Indstil farver

uint32_t neopixelIndex = y*skridt+x;

uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;

uint32_t farve;

hvis (komponenter == 3) {

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

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

}

andet {

farve = 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, farve);

neopixel.show ();

// Færdig

sendResponse ("OK");

}

void commandImage () {

Serial.printf ("Kommando: Billede %dx %d, %d, %d / n", bredde, højde, komponenter, skridt);

// Modtag ny pixelbuffer

int størrelse = bredde * højde;

uint8_t *base_addr = pixelBuffer;

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

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

hvis (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

/*

hvis (komponenter == 3) {

uint32_t index = i*komponenter;

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

}

*/

}

// Skift buffere

Serial.println (F ("Billede modtaget"));

swapBuffers ();

// Færdig

sendResponse ("OK");

}

void sendResponse (char const *response) {

Serial.printf ("Send svar: %s / n", svar);

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

}

Trin 3: Trin 3: Køb lampeskærm

Trin 3: Køb lampeskærm
Trin 3: Køb lampeskærm
Trin 3: Køb lampeskærm
Trin 3: Køb lampeskærm

Trin 4: Trin4: Træk det hele sammen

Anbefalede: