Taula de continguts:

Really Challenge: 5 passos
Really Challenge: 5 passos

Vídeo: Really Challenge: 5 passos

Vídeo: Really Challenge: 5 passos
Vídeo: DESAFIO dos 5 PASSOS PARA A FRENTE! Pegadinhas engraçadas e situações difíceis 123 GO!CHALLENGE 2024, Juliol
Anonim
Image
Image
Pas 1: soldeu el circuit
Pas 1: soldeu el circuit

El món modern requereix que els humans surtin del físic i visquin dins del digital.

Amb l’aparició d’Al i la proliferació de tecnologia, la gent confia massa en la màquina i creu que sempre serà correcta.

"Realment" té com a objectiu sacsejar aquesta falsa confiança mitjançant la creació d'una prova falsa del detector de mentides. La gent creurà fàcilment que realment funciona, però quan es proporcionen respostes falses, trontollarà la seva cega confiança en la tecnologia.

Pas 1: Pas 1: soldeu el circuit

Com que les meves obres només tenen una llum, per tant, és molt fàcil de soldar. El problema principal és al principi, he soldat dues llums, però no he cobert la part d'exposició immediatament. Per tant, quan els dos cables es toquen junts. Es queda curt.

Pas 2: Pas 2: escriviu el codi

p.p1 {margin: 0,0px 0,0px 0,0px 0,0px; alçada de línia: 15,0 px; font: 12.0px Times; color: # 000000; color de fons: #ffffff}

p.p2 {margin: 0,0px 0,0px 0,0px 0,0px; alçada de línia: 15,0 px; font: 12.0px Times; color: # 000000; color de fons: #ffffff; alçada mínima: 14,0 px} span.s1 {font-kerning: none}

Pas 2: escriviu el codi

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

Aquest és un exemple per als nostres mòduls Bluefruit LE basats en nRF52

Trieu-ne un avui mateix a la botiga d’adafruit!

Adafruit inverteix temps i recursos proporcionant aquest codi de codi obert, Si us plau, admeti Adafruit i el maquinari de codi obert comprant

productes d'Adafruit!

Llicència MIT, consulteu la LLICÈNCIA per obtenir més informació

S'ha d'incloure tot el text anterior i la pantalla de presentació següent

qualsevol redistribució

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

/ Aquest esbós està pensat per ser utilitzat amb el control NeoPixel

// apareix a l'aplicació mòbil Bluefruit LE Connect d'Adafruit.

/

/ - Compileu i feu flash aquest esbós a la ploma nRF52

// - Obriu l'aplicació Bluefruit LE Connect

// - Canvieu a la utilitat NeoPixel

// - Feu clic al botó "connectar" per establir una connexió i

// envieu les metadades sobre el disseny de píxels

// - Utilitzeu la utilitat NeoPixel per actualitzar els píxels del dispositiu

/ * NOTA: Aquest esbós requereix com a mínim la versió 1.1.0 d'Adafruit_Neopixel !!! * /

#incloure

#incloure

#incloure

#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"

#define PIN 16 / * Pin utilitzat per conduir els NeoPixels * /

#define MAXCOMPONENTS 4

uint8_t * pixelBuffer = NULL;

uint8_t ample = 0;

uint8_t alçada = 0;

uint8_t calma;

uint8_t componentsValue;

bool is400Hz;

uint8_t components = 3; // només el 3 i el 4 són valors vàlids

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();

// Servei BLE

BLEDfu bledfu;

BLEDis bledis;

BLEUart bleuart;

configuració nul·la ()

{

Serial.begin (115200);

while (! Serial) delay (10); // per nrf52840 amb usb natiu

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

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

Serial.println ();

Serial.println ("Connecteu-vos mitjançant l'aplicació Bluefruit Connect LE");

// Neopíxels de configuració

neopixel.begin ();

// Iniciar Bluefruit

Bluefruit.begin ();

Bluefruit.setTxPower (4); // Comproveu els valors admesos de bluefruit.h

Bluefruit.setName ("Bluefruit52");

Bluefruit. Periph.setConnectCallback (connect_callback);

// Per ser coherent, primer s’ha d’afegir DTAU OTA si existeix

bledfu.begin ();

// Configureu i inicieu el servei d'informació del dispositiu

bledis.setManufacturer ("Adafruit Industries");

bledis.setModel ("Bluefruit Feather52");

bledis.begin ();

// Configureu i inicieu el servei BLE UART

bleuart.begin ();

// Configureu i comenceu a anunciar-vos

startAdv ();

}

void startAdv (void)

{

// Paquet publicitari

Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);

Bluefruit. Advertising.addTxPower ();

// Inclou uuid bleuart de 128 bits

Bluefruit. Advertising.addService (bleuart);

// Paquet de resposta d'escaneig secundari (opcional)

// Com que no hi ha espai per a "Nom" al paquet de publicitat

Bluefruit. ScanResponse.addName ();

/ * Inicieu la publicitat

* - Activeu la publicitat automàtica si es desconnecta

* - Interval: mode ràpid = 20 ms, mode lent = 152,5 ms

* - El temps d'espera per al mode ràpid és de 30 segons

* - Inici (temps d'espera) amb temps d'espera = 0 s'anunciarà per sempre (fins que estigui connectat)

*

* Per a intervals publicitaris recomanats

*

*/

Bluefruit. Advertising.restartOnDisconnect (cert);

Bluefruit. Advertising.setInterval (32, 244); // en unitat de 0,625 ms

Bluefruit. Advertising.setFastTimeout (30); // nombre de segons en mode ràpid

Bluefruit. Advertising.start (0); // 0 = No deixeu de publicitar després de n segons

}

void connect_callback (uint16_t conn_handle)

{

// Obteniu la referència a la connexió actual

BLEConnection * connection = Bluefruit. Connection (conn_handle);

char central_name [32] = {0};

connexió-> getPeerName (nom_central, mida de (nom_central));

Serial.print ("Connectat a");

Serial.println (nom_central);

Serial.println ("Seleccioneu la pestanya" Neopíxels ", feu clic a" Connecta "i divertiu-vos");

}

bucle buit ()

{

// Echo va rebre dades

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

{

int command = bleuart.read ();

commutador (ordre) {

cas "V": {// Obtén la versió

commandVersion ();

trencar;

}

cas "S": {// Configuració de dimensions, components, gambada …

commandSetup ();

trencar;

}

cas "C": {// Esborra amb color

commandClearColor ();

trencar;

}

cas "B": {// Estableix la brillantor

commandSetBrightness ();

trencar;

}

cas "P": {// Estableix el píxel

commandSetPixel ();

trencar;

}

cas "I": {// Rebre imatge nova

commandImage ();

trencar;

}

}

}

}

buid swapBuffers ()

{

uint8_t * base_addr = pixelBuffer;

int pixelIndex = 0;

per a (int j = 0; j <altura; j ++)

{

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

if (components == 3) {

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

}

més {

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

}

add_base + = components;

pixelIndex ++;

}

pixelIndex + = stride - amplada; // Moveu pixelIndex a la fila següent (tingueu en compte el pas)

}

neopixel.show ();

}

void commandVersion () {

Serial.println (F ("Ordre: comprovació de versió"));

sendResponse (NEOPIXEL_VERSION_STRING);

}

void commandSetup () {

Serial.println (F ("Ordre: Configuració"));

ample = bleuart.read ();

altura = bleuart.read ();

stride = bleuart.read ();

componentsValue = bleuart.read ();

is400Hz = bleuart.read ();

neoPixelType pixelType;

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

components = (componentsValue == NEO_RGB || componentsValue == NEO_RBG || componentsValue == NEO_GRB || componentsValue == NEO_GBR || componentsValue == NEO_BRG || componentsValue == NEO_BGR)? 3: 4;

Serial.printf ("\ tsize:% dx% d / n", amplada, alçada);

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

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

Serial.printf ("\ tcomponents:% d / n", components);

if (pixelBuffer! = NULL) {

delete pixelBuffer;

}

uint32_t mida = amplada * alçada;

pixelBuffer = new uint8_t [components * mida];

neopixel.updateLength (mida);

neopixel.updateType (pixelType);

neopixel.setPin (PIN);

// Fet

sendResponse ("D'acord");

}

void commandSetBrightness () {

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

// Valor de lectura

uint8_t brillantor = bleuart.read ();

// Estableix la brillantor

neopixel.setBrillness (brillantor);

// Actualitza els píxels

swapBuffers ();

// Fet

sendResponse ("D'acord");

}

void commandClearColor () {

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

// Llegir color

uint8_t color [MAXCOMPONENTS];

per a (int j = 0; j <components;) {

if (bleuart.available ()) {

color [j] = bleuart.read ();

j ++;

}

}

// Estableix tots els leds en color

int size = ample * alçada;

uint8_t * base_addr = pixelBuffer;

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

per a (int j = 0; j <components; j ++) {

* base_addr = color [j];

add_base ++;

}

}

// Intercanvi de memòries intermèdies

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

swapBuffers ();

if (components == 3) {

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

}

més {

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

}

// Fet

sendResponse ("D'acord");

}

void commandSetPixel () {

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

// Posició de lectura

uint8_t x = bleuart.read ();

uint8_t y = bleuart.read ();

// Llegir colors

uint32_t pixelOffset = y * ample + x;

uint32_t pixelDataOffset = components pixelOffset *;

uint8_t * base_addr = pixelBuffer + pixelDataOffset;

per a (int j = 0; j <components;) {

if (bleuart.available ()) {

* base_addr = bleuart.read ();

add_base ++;

j ++;

}

}

// Estableix colors

uint32_t neopixelIndex = y * stride + x;

uint8_t * pixelBufferPointer = pixelBuffer + pixelDataOffset;

uint32_t color;

if (components == 3) {

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

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

}

més {

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

neopixel.show ();

// Fet

sendResponse ("D'acord");

}

void commandImage () {

Serial.printf ("Ordre: imatge% dx% d,% d,% d / n", amplada, alçada, components, gambada);

// Rebre un nou buffer de píxels

int size = ample * alçada;

uint8_t * base_addr = pixelBuffer;

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

per a (int j = 0; j <components;) {

if (bleuart.available ()) {

* base_addr = bleuart.read ();

add_base ++;

j ++;

}

}

/*

if (components == 3) {

uint32_t index = i * components;

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

}

*/

}

// Intercanvi de memòries intermèdies

Serial.println (F ("Imatge rebuda"));

swapBuffers ();

// Fet

sendResponse ("D'acord");

}

void sendResponse (char const * response) {

Serial.printf ("Enviar resposta:% s / n", resposta);

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

}

Pas 3: Pas 3: Comprar pantalla de pantalla

Pas 3: Comprar pantalla de pantalla
Pas 3: Comprar pantalla de pantalla
Pas 3: Comprar pantalla de pantalla
Pas 3: Comprar pantalla de pantalla

Pas 4: Pas 4: estireu-ho tot junt

Recomanat: