Obsah:

Opravdu výzva: 5 kroků
Opravdu výzva: 5 kroků

Video: Opravdu výzva: 5 kroků

Video: Opravdu výzva: 5 kroků
Video: 🎯 TREFOVACÍ 👣 kroková VÝZVA o 5 dní do členství - Danča Hájková 2024, Červenec
Anonim
Image
Image
Krok 1: Pájejte obvod
Krok 1: Pájejte obvod

Moderní svět vyžaduje, aby lidé vystoupili z fyzického a žili v digitálu.

S výskytem Al a šířením technologií lidé příliš důvěřovali stroji a věřili, že je vždy správný.

„Opravdu“má otřást touto falešnou důvěrou vytvořením testu falešného detektoru lži. Lidé snadno uvěří, že Really opravdu funguje, ale když poskytnou falešné odpovědi, otřese to jejich slepou důvěrou v technologie.

Krok 1: Krok 1: Pájejte obvod

Protože moje díla mají pouze jedno světlo, je velmi snadné je pájet. Hlavní problém je na začátku, pájím dvě světla, ale expoziční část jsem hned nezakryl. Když se tedy část dvou vodičů dotýká. Zkratuje se.

Krok 2: Krok 2: Napište kód

p.p1 {margin: 0,0px 0,0px 0,0px 0,0px; výška řádku: 15,0 px; písmo: 12,0px Times; barva: #000000; barva pozadí: #ffffff}

p.p2 {margin: 0,0px 0,0px 0,0px 0,0px; výška řádku: 15,0 px; písmo: 12,0px Times; barva: #000000; barva pozadí: #ffffff; min-height: 14.0px} span.s1 {font-kerning: none}

Krok 2: Napište kód

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

Toto je příklad pro naše moduly Bluefruit LE založené na nRF52

Vyzvedněte si jeden dnes v obchodě adafruit!

Adafruit investuje čas a prostředky poskytováním tohoto otevřeného zdrojového kódu, podpořte prosím Adafruit a open-source hardware zakoupením

produkty od Adafruit!

Licence MIT, další informace najdete v LICENCI

Veškerý text nahoře a úvodní obrazovka níže musí být zahrnuty v

jakékoli přerozdělování

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

/ Tato skica je určena k použití s ovládacím prvkem NeoPixel

// povrch v mobilní aplikaci Adafruit Bluefruit LE Connect.

/

/ - Zkompilovat a flashovat tento náčrt do nRF52 Feather

// - Otevřete aplikaci Bluefruit LE Connect

// - Přepněte na nástroj NeoPixel

// - Kliknutím na tlačítko „připojit“navážete připojení a

// odeslání metadat o rozložení pixelů

// - Pomocí nástroje NeoPixel aktualizujte pixely ve vašem zařízení

/* POZNÁMKA: Tato skica vyžadovala alespoň verzi 1.1.0 Adafruit_Neopixel !!! */

#zahrnout

#zahrnout

#zahrnout

#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"

#define PIN 16 / * Pin používaný k pohonu NeoPixels * /

#define MAXCOMPONENTS 4

uint8_t *pixelBuffer = NULL;

uint8_t šířka = 0;

uint8_t výška = 0;

uint8_t krok;

uint8_t componentsValue;

bool je 400 Hz;

uint8_t komponenty = 3; // pouze 3 a 4 jsou platné hodnoty

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();

// Služba BLE

BLEDfu bledfu;

BLEDis bledis;

BLEUart bleuart;

neplatné nastavení ()

{

Serial.begin (115200);

while (! Serial) delay (10); // pro nrf52840 s nativním usb

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

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

Serial.println ();

Serial.println („Připojte se prosím pomocí aplikace Bluefruit Connect LE“);

// Konfigurace Neopixelů

neopixel.begin ();

// Init Bluefruit

Bluefruit.begin ();

Bluefruit.setTxPower (4); // Podporované hodnoty najdete na bluefruit.h

Bluefruit.setName ("Bluefruit52");

Bluefruit. Periph.setConnectCallback (connect_callback);

// Aby byla konzistentní, OTA DFU by měla být přidána jako první, pokud existuje

bledfu.begin ();

// Konfigurace a spuštění služby informací o zařízení

bledis.setManufacturer („Adafruit Industries“);

bledis.setModel ("Bluefruit Feather52");

bledis.begin ();

// Konfigurace a spuštění služby BLE UART

bleuart.begin ();

// Nastavení a zahájení reklamy

startAdv ();

}

void startAdv (neplatné)

{

// Reklamní balíček

Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);

Bluefruit. Advertising.addTxPower ();

// Zahrnout bleuart 128bitový uuid

Bluefruit. Advertising.addService (bleuart);

// Balíček odezvy na sekundární skenování (volitelně)

// Protože v reklamním paketu není místo pro 'Jméno'

Bluefruit. ScanResponse.addName ();

/* Začněte inzerovat

* - Povolit automatickou reklamu, pokud je odpojen

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

* - Časový limit pro rychlý režim je 30 sekund

* - Start (časový limit) s časovým limitem = 0 bude inzerovat navždy (dokud nebude připojen)

*

* Pro doporučený reklamní interval

*

*/

Bluefruit. Advertising.restartOnDisconnect (true);

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

Bluefruit. Advertising.setFastTimeout (30); // počet sekund v rychlém režimu

Bluefruit. Advertising.start (0); // 0 = Nepřestávejte s reklamou po n sekundách

}

neplatné connect_callback (uint16_t conn_handle)

{

// Získejte odkaz na aktuální připojení

BLEConnection* connection = Bluefruit. Connection (conn_handle);

char central_name [32] = {0};

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

Serial.print („Připojeno k“);

Serial.println (central_name);

Serial.println („Vyberte prosím kartu„ Neopixely “, klikněte na„ Připojit “a bavte se“);

}

prázdná smyčka ()

{

// Echo přijatá data

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

{

int příkaz = bleuart.read ();

přepínač (příkaz) {

případ 'V': {// Získat verzi

commandVersion ();

přestávka;

}

případ 'S': {// Nastavení rozměrů, komponent, krok…

commandSetup ();

přestávka;

}

případ 'C': {// Vymazat barvou

příkazClearColor ();

přestávka;

}

případ 'B': {// Nastavit jas

commandSetBrightness ();

přestávka;

}

případ 'P': {// Nastavit Pixel

commandSetPixel ();

přestávka;

}

případ 'I': {// Přijmout nový obrázek

commandImage ();

přestávka;

}

}

}

}

void swapBuffers ()

{

uint8_t *base_addr = pixelBuffer;

int pixelIndex = 0;

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

{

pro (int i = 0; i <šířka; i ++) {

pokud (komponenty == 3) {

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

}

jinak {

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

}

base_addr+= komponenty;

pixelIndex ++;

}

pixelIndex += krok - šířka; // Přesuňte pixelIndex na další řádek (vezměte v úvahu krok)

}

neopixel.show ();

}

neplatný příkazVersion () {

Serial.println (F ("Příkaz: Kontrola verze"));

sendResponse (NEOPIXEL_VERSION_STRING);

}

neplatný příkazSetup () {

Serial.println (F ("Příkaz: Nastavení"));

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", šířka, výška);

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

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

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

if (pixelBuffer! = NULL) {

odstranit pixelBuffer;

}

uint32_t velikost = šířka*výška;

pixelBuffer = nový uint8_t [velikost*komponenty];

neopixel.updateLength (velikost);

neopixel.updateType (pixelType);

neopixel.setPin (PIN);

// Hotovo

sendResponse („OK“);

}

neplatný příkazSetBrightness () {

Serial.println (F ("Příkaz: SetBrightness"));

// Přečíst hodnotu

uint8_t jas = bleuart.read ();

// Nastavení jasu

neopixel.setBrightness (jas);

// Obnovte pixely

swapBuffers ();

// Hotovo

sendResponse ("OK");

}

zrušit příkazClearColor () {

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

// Přečíst barvu

uint8_t barva [MAXKOMPONENTY];

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

if (bleuart.available ()) {

barva [j] = bleuart.read ();

j ++;

}

}

// Nastavte všechny LED na barvu

int velikost = šířka * výška;

uint8_t *base_addr = pixelBuffer;

pro (int i = 0; i <velikost; i ++) {

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

*base_addr = barva [j];

base_addr ++;

}

}

// Výměna vyrovnávacích pamětí

Serial.println (F ("ClearColor dokončeno"));

swapBuffers ();

pokud (komponenty == 3) {

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

}

jinak {

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

}

// Hotovo

sendResponse ("OK");

}

neplatný příkazSetPixel () {

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

// Přečíst pozici

uint8_t x = bleuart.read ();

uint8_t y = bleuart.read ();

// Čtení barev

uint32_t pixelOffset = y*width+x;

uint32_t pixelDataOffset = pixelOffset*komponenty;

uint8_t *base_addr = pixelBuffer+pixelDataOffset;

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

if (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

// Nastavení barev

uint32_t neopixelIndex = y*krok+x;

uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;

barva uint32_t;

pokud (komponenty == 3) {

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

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

}

jinak {

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

neopixel.show ();

// Hotovo

sendResponse ("OK");

}

neplatný příkazImage () {

Serial.printf ("Příkaz: Obrázek %dx %d, %d, %d / n", šířka, výška, komponenty, krok);

// Příjem nového pixelového bufferu

int velikost = šířka * výška;

uint8_t *base_addr = pixelBuffer;

pro (int i = 0; i <velikost; i ++) {

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

if (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

/*

pokud (komponenty == 3) {

uint32_t index = i*komponenty;

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

}

*/

}

// Výměna vyrovnávacích pamětí

Serial.println (F ("Obrázek přijat"));

swapBuffers ();

// Hotovo

sendResponse („OK“);

}

void sendResponse (char const *response) {

Serial.printf ("Odeslat odpověď: %s / n", odpověď);

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

}

Krok 3: Krok 3: Nákup stínítka

Krok 3: Nákup stínítka
Krok 3: Nákup stínítka
Krok 3: Nákup stínítka
Krok 3: Nákup stínítka

Krok 4: Krok 4: Vytáhněte vše dohromady

Doporučuje: