Innholdsfortegnelse:

Virkelig utfordring: 5 trinn
Virkelig utfordring: 5 trinn

Video: Virkelig utfordring: 5 trinn

Video: Virkelig utfordring: 5 trinn
Video: Узнав это СЕКРЕТ, ты никогда не выбросишь пластиковую бутылку! ТАКОГО ЕЩЕ НИКТО НЕ ВИДЕЛ! 2024, Juli
Anonim
Image
Image
Trinn 1: Lodd kretsen
Trinn 1: Lodd kretsen

Den moderne verden krever at mennesker går ut av det fysiske og lever innenfor det digitale.

Med utseendet til Al og spredningen av teknologi setter folk for mye tillit til maskinen og tror at den alltid er korrekt.

"Really" er ment å riste denne falske tilliten gjennom opprettelsen av en falsk løgnedetektortest. Folk vil lett tro at Really fungerer, men når det gis falske svar, vil det riste deres blinde tillit til teknologi.

Trinn 1: Trinn 1: Lodd kretsen

Fordi verkene mine bare har ett lys, så det er veldig enkelt å lodde. Hovedproblemet er i begynnelsen, jeg lodder to lys, men jeg dekket ikke eksponeringsdelen umiddelbart. Så når de to ledningene deles sammen. Det kortsluttes.

Trinn 2: Trinn 2: Skriv koden

p.p1 {margin: 0,0px 0,0px 0,0px 0,0px; linjehøyde: 15,0px; font: 12.0px Times; farge: #000000; bakgrunnsfarge: #ffffff}

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

Trinn 2: Skriv koden

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

Dette er et eksempel på våre nRF52 -baserte Bluefruit LE -moduler

Hent en i dag i adafruit -butikken!

Adafruit investerer tid og ressurser ved å tilby denne åpen kildekoden, Vennligst støtt Adafruit og åpen kildekode-maskinvare ved å kjøpe

produkter fra Adafruit!

MIT -lisens, sjekk LISENS for mer informasjon

All tekst ovenfor og sprutskjermen nedenfor må inkluderes i

enhver omfordeling

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

/ Denne skissen er ment å brukes med NeoPixel -kontrollen

// overflate i Adafruit's Bluefruit LE Connect mobilapplikasjon.

/

/ - Kompiler og blits denne skissen til nRF52 -fjæren

// - Åpne Bluefruit LE Connect -appen

// - Bytt til NeoPixel -verktøyet

// - Klikk på "koble til" -knappen for å opprette en tilkobling og

// send metadataene om pikseloppsettet

// - Bruk NeoPixel -verktøyet til å oppdatere pikslene på enheten din

/* MERK: Denne skissen krevde minst versjon 1.1.0 av Adafruit_Neopixel !!! */

#inkludere

#inkludere

#inkludere

#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"

#define PIN 16 / * Pin som ble brukt til å kjøre NeoPixels * /

#define MAXCOMPONENTS 4

uint8_t *pixelBuffer = NULL;

uint8_t bredde = 0;

uint8_t høyde = 0;

uint8_t skritt;

uint8_t componentsValue;

bool er 400Hz;

uint8_t komponenter = 3; // bare 3 og 4 er gyldige verdier

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();

// BLE Service

BLEDfu bledfu;

BLEDis bledis;

BLEUart bleuart;

ugyldig oppsett ()

{

Serial.begin (115200);

mens (! Seriell) forsinkelse (10); // for nrf52840 med native usb

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

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

Serial.println ();

Serial.println ("Vennligst koble til ved hjelp av Bluefruit Connect LE -programmet");

// Config Neopixels

neopixel.begin ();

// Init Bluefruit

Bluefruit.begin ();

Bluefruit.setTxPower (4); // Sjekk bluefruit.h for verdier som støttes

Bluefruit.setName ("Bluefruit52");

Bluefruit. Periph.setConnectCallback (connect_callback);

// For å være konsekvent må OTA DFU legges til først hvis den eksisterer

bledfu.begin ();

// Konfigurer og start Device Information Service

bledis.setManufacturer ("Adafruit Industries");

bledis.setModel ("Bluefruit Feather52");

bledis.begin ();

// Konfigurer og start BLE UART -tjenesten

bleuart.begin ();

// Sett opp og begynn å annonsere

startAdv ();

}

void startAdv (void)

{

// Annonsepakke

Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);

Bluefruit. Advertising.addTxPower ();

// Inkluder bleuart 128-biters uuid

Bluefruit. Advertising.addService (bleuart);

// Sekundær skannesponspakke (valgfritt)

// Siden det ikke er plass til 'Navn' i reklamepakken

Bluefruit. ScanResponse.addName ();

/* Start annonsering

* - Aktiver automatisk annonsering hvis den er frakoblet

* - Intervall: rask modus = 20 ms, sakte modus = 152,5 ms

* - Tidsavbrudd for hurtigmodus er 30 sekunder

* - Start (timeout) med timeout = 0 vil annonsere for alltid (til du er tilkoblet)

*

* For anbefalt reklameintervall

*

*/

Bluefruit. Advertising.restartOnDisconnect (true);

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

Bluefruit. Advertising.setFastTimeout (30); // antall sekunder i hurtigmodus

Bluefruit. Advertising.start (0); // 0 = Ikke slutt å annonsere etter n sekunder

}

void connect_callback (uint16_t conn_handle)

{

// Få referansen til gjeldende tilkobling

BLEConnection* tilkobling = Bluefruit. Connection (conn_handle);

char central_name [32] = {0};

tilkobling-> getPeerName (sentralnavn, størrelse på (sentralnavn));

Serial.print ("Koblet til");

Serial.println (sentralnavn);

Serial.println ("Velg" Neopixels "-fanen, klikk" Connect "og ha det gøy");

}

hulrom ()

{

// Echo mottok data

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

{

int kommando = bleuart.read ();

bytte (kommando) {

case 'V': {// Få versjon

commandVersion ();

gå i stykker;

}

case 'S': {// Oppsett dimensjoner, komponenter, skritt …

commandSetup ();

gå i stykker;

}

tilfelle 'C': {// Klar med farge

commandClearColor ();

gå i stykker;

}

tilfelle 'B': {// Angi lysstyrke

commandSetBrightness ();

gå i stykker;

}

tilfelle 'P': {// Sett Pixel

commandSetPixel ();

gå i stykker;

}

case 'I': {// Motta nytt bilde

commandImage ();

gå i stykker;

}

}

}

}

void swapBuffers ()

{

uint8_t *base_addr = pixelBuffer;

int pixelIndex = 0;

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

{

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

hvis (komponenter == 3) {

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

}

annet {

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

}

base_addr+= komponenter;

pixelIndex ++;

}

pixelIndex += skritt - bredde; // Flytt pixelIndex til neste rad (ta hensyn til skrittet)

}

neopixel.show ();

}

void commandVersion () {

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

sendResponse (NEOPIXEL_VERSION_STRING);

}

void commandSetup () {

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

bredde = bleuart.read ();

høyde = bleuart.read ();

stride = bleuart.read ();

componentsValue = bleuart.read ();

is400Hz = bleuart.read ();

neoPixelType pixelType;

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

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

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

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

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

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

if (pixelBuffer! = NULL) {

slett pixelBuffer;

}

uint32_t størrelse = bredde*høyde;

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

neopixel.updateLength (størrelse);

neopixel.updateType (pixelType);

neopixel.setPin (PIN);

// Ferdig

sendResponse ("OK");

}

void commandSetBrightness () {

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

// Les verdi

uint8_t lysstyrke = bleuart.read ();

// Still inn lysstyrke

neopixel.setBrightness (lysstyrke);

// Oppdater piksler

swapBuffers ();

// Ferdig

sendResponse ("OK");

}

void commandClearColor () {

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

// Les farge

uint8_t farge [MAXCOMPONENTS];

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

if (bleuart.available ()) {

farge [j] = bleuart.read ();

j ++;

}

}

// Sett alle lysdioder til farge

int størrelse = bredde * høyde;

uint8_t *base_addr = pixelBuffer;

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

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

*base_addr = farge [j];

base_addr ++;

}

}

// Bytt buffere

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

swapBuffers ();

hvis (komponenter == 3) {

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

}

annet {

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

}

// Ferdig

sendResponse ("OK");

}

void commandSetPixel () {

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

// Les posisjon

uint8_t x = bleuart.read ();

uint8_t y = bleuart.read ();

// Les farger

uint32_t pixelOffset = y*bredde+x;

uint32_t pixelDataOffset = pixelOffset*komponenter;

uint8_t *base_addr = pixelBuffer+pixelDataOffset;

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

if (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

// Sett farger

uint32_t neopixelIndex = y*skritt+x;

uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;

uint32_t farge;

hvis (komponenter == 3) {

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

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

}

annet {

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, farge);

neopixel.show ();

// Ferdig

sendResponse ("OK");

}

void commandImage () {

Serial.printf ("Kommando: Bilde %dx %d, %d, %d / n", bredde, høyde, komponenter, skritt);

// Motta ny pikselbuffer

int størrelse = bredde * høyde;

uint8_t *base_addr = pixelBuffer;

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

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

if (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]);

}

*/

}

// Bytt buffere

Serial.println (F ("Bilde mottatt"));

swapBuffers ();

// Ferdig

sendResponse ("OK");

}

void sendResponse (char const *response) {

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

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

}

Trinn 3: Trinn 3: Kjøpe lampeskjerm

Trinn 3: Kjøpe lampeskjerm
Trinn 3: Kjøpe lampeskjerm
Trinn 3: Kjøpe lampeskjerm
Trinn 3: Kjøpe lampeskjerm

Trinn 4: Trinn 4: Trekk alt sammen

Anbefalt: