Obsah:

Naozaj výzva: 5 krokov
Naozaj výzva: 5 krokov

Video: Naozaj výzva: 5 krokov

Video: Naozaj výzva: 5 krokov
Video: 2x0.5 ПРОТИВ ВСЕХ | V.V x АЙ ЭМ vs SHALA x СТVРЫЙ СТИЛЬ x VERCH.FATE x ДЕЙТИ | КУБОК МЦ: XIII (BPM) 2024, Júl
Anonim
Image
Image
Krok 1: Zapájajte obvod
Krok 1: Zapájajte obvod

Moderný svet vyžaduje, aby ľudia vystúpili z fyzického a žili v digitálnom svete.

Vzhľadom na výskyt Al a šírenie technológie ľudia príliš dôverujú stroju a veria, že je vždy správny.

Cieľom „Naozaj“je otriasť touto falošnou dôverou vytvorením testu falošného detektora lži. Ľudia ľahko uveria, že Really funguje, ale keď poskytnete nepravdivé odpovede, otrasie to ich slepou dôverou v technológie.

Krok 1: Krok 1: Spájkujte obvod

Pretože moje diela majú iba jedno svetlo, je veľmi ľahké ho spájkovať. Hlavný problém je na začiatku, spájkujem dve svetlá, ale expozičnú časť som hneď nezakryl. Keď sa teda časť dvoch drôtov dotýka. Skratuje sa.

Krok 2: Krok 2: Napíšte kód

p.p1 {margin: 0,0px 0,0px 0,0px 0,0px; výška riadka: 15,0 pixelov; písmo: 12,0px Times; farba: #000000; farba pozadia: #ffffff}

p.p2 {margin: 0,0px 0,0px 0,0px 0,0px; výška riadka: 15,0 pixelov; písmo: 12,0px Times; farba: #000000; farba pozadia: #ffffff; min-height: 14.0px} span.s1 {font-kerning: none}

Krok 2: Napíšte kód

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

Toto je príklad pre naše moduly Bluefruit LE založené na nRF52

Vyberte si jeden dnes v obchode s adafruitmi!

Adafruit investuje čas a zdroje tým, že poskytuje tento otvorený zdrojový kód, podporte prosím Adafruit a hardvér s otvoreným zdrojovým kódom kúpou

produkty od spoločnosti Adafruit!

Licencia MIT, ďalšie informácie nájdete v LICENCII

Musí byť zahrnutý všetok text vyššie a úvodná obrazovka nižšie

akékoľvek prerozdelenie

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

/ Táto skica je určená na použitie s ovládacím prvkom NeoPixel

// povrch v mobilnej aplikácii Adafruit Bluefruit LE Connect.

/

/ - Zostavte a nakreslite tento náčrt do peria nRF52

// - Otvorte aplikáciu Bluefruit LE Connect

// - Prepnite na nástroj NeoPixel

// - Kliknutím na tlačidlo „pripojiť“nadviažete spojenie a

// odoslanie metaúdajov o rozložení pixelov

// - Na aktualizáciu pixelov vo svojom zariadení použite pomôcku NeoPixel

/* POZNÁMKA: Tento náčrt vyžaduje minimálne verziu 1.1.0 programu Adafruit_Neopixel !!! */

#zahrnúť

#zahrnúť

#zahrnúť

#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"

#define PIN 16 / * Pin používaný na pohon NeoPixels * /

#define MAXCOMPONENTS 4

uint8_t *pixelBuffer = NULL;

uint8_t šírka = 0;

uint8_t výška = 0;

uint8_t krok;

uint8_t componentsValue;

bool je 400 Hz;

uint8_t komponenty = 3; // iba 3 a 4 sú platné hodnoty

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();

// Služba BLE

BLEDfu bledfu;

BLEDis bledis;

BLEUart bleuart;

neplatné nastavenie ()

{

Serial.begin (115200);

pričom (! Sériové) oneskorenie (10); // pre nrf52840 s natívnym usb

Serial.println ("Neopixelový test Adafruit Bluefruit");

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

Serial.println ();

Serial.println („Pripojte sa prosím pomocou aplikácie Bluefruit Connect LE“);

// Konfigurácia neopixelov

neopixel.begin ();

// Init Bluefruit

Bluefruit.begin ();

Bluefruit.setTxPower (4); // Podporované hodnoty nájdete na stránke bluefruit.h

Bluefruit.setName ("Bluefruit52");

Bluefruit. Periph.setConnectCallback (connect_callback);

// Aby bola konzistentná, OTA DFU by mala byť pridaná ako prvá, ak existuje

bledfu.begin ();

// Konfigurácia a spustenie služby informácií o zariadení

bledis.setManufacturer („Adafruit Industries“);

bledis.setModel ("Bluefruit Feather52");

bledis.begin ();

// Konfigurácia a spustenie služby BLE UART

bleuart.begin ();

// Nastavte a začnite inzerovať

startAdv ();

}

void startAdv (neplatné)

{

// Reklamný balíček

Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);

Bluefruit. Advertising.addTxPower ();

// Zahrňte bleuart 128-bitový uuid

Bluefruit. Advertising.addService (bleuart);

// Paket so sekundárnou odozvou na skenovanie (voliteľné)

// Pretože v pakete Reklama nie je miesto pre 'Meno'

Bluefruit. ScanResponse.addName ();

/* Začnite inzerovať

* - Povoliť automatickú reklamu, ak je odpojený

* - Interval: rýchly režim = 20 ms, pomalý režim = 152,5 ms

* - Časový limit pre rýchly režim je 30 sekúnd

* - Začiatok (časový limit) s časovým limitom = 0 bude inzerovať navždy (pokiaľ nie je pripojený)

*

* Pre odporúčaný reklamný interval

*

*/

Bluefruit. Advertising.restartOnDisconnect (true);

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

Bluefruit. Advertising.setFastTimeout (30); // počet sekúnd v rýchlom režime

Bluefruit. Advertising.start (0); // 0 = Nezastavujte reklamu po n sekundách

}

neplatné connect_callback (uint16_t conn_handle)

{

// Získa odkaz na aktuálne pripojenie

BLEConnection* connection = Bluefruit. Connection (conn_handle);

char central_name [32] = {0};

connection-> getPeerName (central_name, sizeof (central_name));

Serial.print („Pripojené k“);

Serial.println (central_name);

Serial.println („Vyberte kartu„ Neopixely “, kliknite na„ Pripojiť “a bavte sa“);

}

prázdna slučka ()

{

// Ozvena prijatých údajov

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

{

int príkaz = bleuart.read ();

prepnúť (príkaz) {

prípad 'V': {// Získať verziu

commandVersion ();

prestávka;

}

prípad 'S': {// Nastavenie rozmerov, komponentov, krok…

commandSetup ();

prestávka;

}

prípad 'C': {// Číry s farbou

príkazClearColor ();

prestávka;

}

prípad 'B': {// Nastavte jas

commandSetBrightness ();

prestávka;

}

prípad 'P': {// Nastaviť pixel

commandSetPixel ();

prestávka;

}

prípad 'I': {// Prijať nový obrázok

commandImage ();

prestávka;

}

}

}

}

void swapBuffers ()

{

uint8_t *base_addr = pixelBuffer;

int pixelIndex = 0;

pre (int j = 0; j <výška; j ++)

{

pre (int i = 0; i <šírka; i ++) {

ak (komponenty == 3) {

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

}

inak {

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

}

base_addr+= komponenty;

pixelIndex ++;

}

pixelIndex += krok - šírka; // Presuňte pixelIndex do ďalšieho riadka (vezmite do úvahy krok)

}

neopixel.show ();

}

neplatný príkazVersion () {

Serial.println (F ("Príkaz: Kontrola verzie"));

sendResponse (NEOPIXEL_VERSION_STRING);

}

neplatný príkazSetup () {

Serial.println (F ("Príkaz: Nastavenie"));

width = bleuart.read ();

výška = bleuart.read ();

stride = bleuart.read ();

componentsValue = bleuart.read ();

is400Hz = bleuart.read ();

neoPixelType pixelType;

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

komponenty = (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", šírka, výška);

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

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

Serial.printf ("\ tkomponenty: %d / n", komponenty);

if (pixelBuffer! = NULL) {

vymazať pixelBuffer;

}

uint32_t veľkosť = šírka*výška;

pixelBuffer = nový uint8_t [veľkosť*komponenty];

neopixel.updateLength (veľkosť);

neopixel.updateType (pixelType);

neopixel.setPin (PIN);

// Hotový

sendResponse („OK“);

}

neplatný príkazSetBrightness () {

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

// Čítanie hodnoty

uint8_t jas = bleuart.read ();

// Nastavenie jasu

neopixel.setJas (jas);

// Obnovenie pixelov

swapBuffers ();

// Hotový

sendResponse („OK“);

}

zrušiť príkazClearColor () {

Serial.println (F ("Príkaz: ClearColor"));

// Prečítajte si farbu

uint8_t farba [MAXKOMPONENTY];

pre (int j = 0; j <komponenty;) {

ak (bleuart.available ()) {

farba [j] = bleuart.read ();

j ++;

}

}

// Nastavte všetky LED diódy na farbu

int veľkosť = šírka * výška;

uint8_t *base_addr = pixelBuffer;

pre (int i = 0; i <veľkosť; i ++) {

pre (int j = 0; j <komponenty; j ++) {

*base_addr = farba [j];

base_addr ++;

}

}

// Vymeňte nárazníky

Serial.println (F ("ClearColor dokončený"));

swapBuffers ();

ak (komponenty == 3) {

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

}

inak {

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

}

// Hotový

sendResponse („OK“);

}

neplatný príkazSetPixel () {

Serial.println (F ("Príkaz: SetPixel"));

// Poloha čítania

uint8_t x = bleuart.read ();

uint8_t y = bleuart.read ();

// Čítajte farby

uint32_t pixelOffset = y*šírka+x;

uint32_t pixelDataOffset = pixelOffset*komponenty;

uint8_t *base_addr = pixelBuffer+pixelDataOffset;

pre (int j = 0; j <komponenty;) {

ak (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

// Nastavenie farieb

uint32_t neopixelIndex = y*krok+x;

uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;

farba uint32_t;

ak (komponenty == 3) {

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

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

}

inak {

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

neopixel.show ();

// Hotový

sendResponse („OK“);

}

zrušiť príkazImage () {

Serial.printf ("Príkaz: obrázok %dx %d, %d, %d / n", šírka, výška, komponenty, krok);

// Príjem novej vyrovnávacej pamäte pixelov

int veľkosť = šírka * výška;

uint8_t *base_addr = pixelBuffer;

pre (int i = 0; i <veľkosť; i ++) {

pre (int j = 0; j <komponenty;) {

ak (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

/*

ak (komponenty == 3) {

uint32_t index = i*komponenty;

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

}

*/

}

// Vymeňte nárazníky

Serial.println (F ("Obrázok prijatý"));

swapBuffers ();

// Hotový

sendResponse („OK“);

}

void sendResponse (char const *response) {

Serial.printf ("Odoslať odpoveď: %s / n", odpoveď);

bleuart.write (odpoveď, strlen (odpoveď)*sizeof (char));

}

Krok 3: Krok 3: Nákup tienidla

Krok 3: Nákup tienidla
Krok 3: Nákup tienidla
Krok 3: Nákup tienidla
Krok 3: Nákup tienidla

Krok 4: Krok 4: Spojte všetko dohromady

Odporúča: