Tartalomjegyzék:

Valódi kihívás: 5 lépés
Valódi kihívás: 5 lépés

Videó: Valódi kihívás: 5 lépés

Videó: Valódi kihívás: 5 lépés
Videó: Alkalmazottból vállalkozó kihívás | 5. rész: Vágj bele! 2024, Július
Anonim
Image
Image
Lépés: Forrasztja az áramkört
Lépés: Forrasztja az áramkört

A modern világ megköveteli az emberektől, hogy kilépjenek a fizikából és a digitális keretek között éljenek.

Az Al megjelenésével és a technológia elterjedésével az emberek túlságosan bíznak a gépben, és azt hiszik, hogy mindig helyes.

A „Valóban” célja a hamis bizalom megingatása egy hamis hazugságvizsgáló teszt létrehozásával. Az emberek könnyen el fogják hinni, hogy a Valóban működik, de ha hamis válaszokat adnak, az megingatja a technológia iránti bizalmukat.

1. lépés: 1. lépés: Forrasztja az áramkört

Mivel a munkáimnak csak egy fénye van, így nagyon könnyen forrasztható. A fő probléma az elején van, két fényt forrasztom, de nem fedtem le azonnal az expozíciós részt. Tehát amikor a két vezeték része összeér. Rövid lesz.

2. lépés: 2. lépés: Írja be a kódot

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; vonalmagasság: 15,0 képpont; betűtípus: 12.0px Times; szín: #000000; háttérszín: #ffffff}

p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; vonalmagasság: 15,0 képpont; betűtípus: 12.0px Times; szín: #000000; háttérszín: #ffffff; min-height: 14.0px} span.s1 {font-kerning: none}

2. lépés: Írja be a kódot

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

Ez egy példa az nRF52 alapú Bluefruit LE moduljainkra

Vedd fel ma az adafruit boltban!

Az Adafruit időt és erőforrásokat fektet be a nyílt forráskód biztosításába, Kérjük, vásárlásával támogassa az Adafruitot és a nyílt forráskódú hardvert

az Adafruit termékei!

MIT licenc, további információkért tekintse meg a LICENCE -t

A fenti szöveget és az alábbi splash képernyőt bele kell foglalni

bármilyen újraelosztás

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

/ Ez a vázlat a NeoPixel vezérlővel használható

// felület az Adafruit Bluefruit LE Connect mobilalkalmazásában.

/

/ - Fordítsa össze és villanja fel ezt a vázlatot az nRF52 tollhoz

// - Nyissa meg a Bluefruit LE Connect alkalmazást

// - Váltás a NeoPixel segédprogramra

// - Kattintson a "connect" gombra a kapcsolat létrehozásához és

// elküldi a metaadatokat a képpont-elrendezésről

// - Használja a NeoPixel segédprogramot a készüléken lévő képpontok frissítéséhez

/* MEGJEGYZÉS: Ehhez a vázlathoz legalább az Adafruit_Neopixel 1.1.0 verziója szükséges !!! */

#befoglalni

#befoglalni

#befoglalni

#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"

#define PIN 16 / * A NeoPixel -ek meghajtásához használt PIN -kód * /

#define MAXCOMPONENTS 4

uint8_t *pixelBuffer = NULL;

uint8_t width = 0;

uint8_t magasság = 0;

uint8_t stride;

uint8_t componentsValue;

bool 400 Hz;

uint8_t összetevők = 3; // csak a 3 és a 4 érvényes érték

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();

// BLE szolgáltatás

BLEDfu bledfu;

BLEDis bledis;

BLEUart bleuart;

üres beállítás ()

{

Sorozat.kezdet (115200);

míg (! Soros) késleltetés (10); // nrf52840 esetén natív USB -vel

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

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

Sorozat.println ();

Serial.println ("Kérjük, csatlakozzon a Bluefruit Connect LE alkalmazás segítségével");

// Neopixelek konfigurálása

neopixel.begin ();

Init Bluefruit

Bluefruit.begin ();

Bluefruit.setTxPower (4); // Ellenőrizze a bluefruit.h oldalon a támogatott értékeket

Bluefruit.setName ("Bluefruit52");

Bluefruit. Periph.setConnectCallback (connect_callback);

// A következetesség érdekében az OTA DFU -t először hozzá kell adni, ha létezik

bledfu.begin ();

// Eszközinformációs szolgáltatás konfigurálása és indítása

bledis.setManufacturer ("Adafruit Industries");

bledis.setModel ("Bluefruit Feather52");

bledis.begin ();

// A BLE UART szolgáltatás konfigurálása és indítása

bleuart.begin ();

// Állítsa be és indítsa el a hirdetést

startAdv ();

}

void startAdv (void)

{

// Reklámcsomag

Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);

Bluefruit. Advertising.addTxPower ();

// Belefoglalja a 128 bites uuid-t

Bluefruit. Advertising.addService (bleuart);

// Másodlagos szkennelési válasz csomag (opcionális)

// Mivel a Reklámcsomagban nincs hely a „Név” számára

Bluefruit. ScanResponse.addName ();

/* Indítsa el a hirdetést

* - Engedélyezze az automatikus hirdetést, ha le van választva

* - Időköz: gyors üzemmód = 20 ms, lassú mód = 152,5 ms

* - A gyors üzemmód időtúllépése 30 másodperc

* - Kezdés (időtúllépés) időtúllépéssel = 0 örökre hirdetni fog (amíg nem csatlakozik)

*

* Az ajánlott hirdetési időközhöz

*

*/

Bluefruit. Advertising.restartOnDisconnect (igaz);

Bluefruit. Advertising.setInterval (32, 244); // 0,625 ms -os egységben

Bluefruit. Advertising.setFastTimeout (30); // másodpercek száma gyors módban

Bluefruit. Advertising.start (0); // 0 = Ne hagyja abba a hirdetést n másodperc múlva

}

void connect_callback (uint16_t conn_handle)

{

// Hivatkozás az aktuális kapcsolatra

BLEConnection* kapcsolat = Bluefruit. Connection (conn_handle);

char központi_név [32] = {0};

kapcsolat-> getPeerName (központi_név, sizeof (központi_név));

Serial.print ("Csatlakoztatva");

Serial.println (központi_név);

Serial.println ("Kérjük, válassza ki a" Neopixelek "fület, kattintson a" Csatlakozás "gombra és érezze jól magát");

}

üres hurok ()

{

// Az Echo adatokat kapott

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

{

int parancs = bleuart.read ();

kapcsoló (parancs) {

„V” eset: {// Verzió letöltése

commandVersion ();

szünet;

}

„S” eset: {// Beállítási méretek, alkatrészek, lépés…

commandSetup ();

szünet;

}

„C” eset: {// Tiszta színnel

commandClearColor ();

szünet;

}

„B” eset: {// Fényerő beállítása

commandSetBrightness ();

szünet;

}

„P” eset: {// Pixel beállítása

commandSetPixel ();

szünet;

}

„I” eset: {// Új kép fogadása

commandImage ();

szünet;

}

}

}

}

void swapBuffers ()

{

uint8_t *base_addr = pixelBuffer;

int pixelIndex = 0;

for (int j = 0; j <magasság; j ++)

{

for (int i = 0; i <szélesség; i ++) {

if (összetevők == 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)));

}

base_addr+= összetevők;

pixelIndex ++;

}

pixelIndex += lépés - szélesség; // A pixelIndex áthelyezése a következő sorba (vegye figyelembe a lépést)

}

neopixel.show ();

}

void commandVersion () {

Serial.println (F ("Parancs: Verzióellenőrzés"));

sendResponse (NEOPIXEL_VERSION_STRING);

}

void commandSetup () {

Serial.println (F ("Parancs: Beállítás"));

szélesség = bleuart.read ();

magasság = bleuart.read ();

lépés = bleuart.read ();

componentsValue = bleuart.read ();

is400Hz = bleuart.read ();

neoPixelType pixelType;

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

komponensek = (összetevők Érték == NEO_RGB || komponensekVért == NEO_RBG || komponensVérték == NEO_GRB || komponensVérték == NEO_GBR || összetevőkVért == NEO_BRG || komponensérték = = NEO_BGR)? 3: 4;

Serial.printf ("\ tsize: %dx %d / n", szélesség, magasság);

Serial.printf ("\ tstride: %d / n", lépés);

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

Serial.printf ("\ tösszetevők: %d / n", összetevők);

if (pixelBuffer! = NULL) {

delete pixelBuffer;

}

uint32_t méret = szélesség*magasság;

pixelBuffer = új uint8_t [méret*összetevők];

neopixel.updateLength (méret);

neopixel.updateType (pixelType);

neopixel.setPin (PIN);

// Kész

sendResponse ("OK");

}

void commandSetBrightness () {

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

// Érték olvasása

uint8_t fényerő = bleuart.read ();

// Állítsa be a fényerőt

neopixel.setBrightness (fényerő);

// Képpontok frissítése

swapBuffers ();

// Kész

sendResponse ("OK");

}

void commandClearColor () {

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

// Szín olvasása

uint8_t color [MAXCOMPONENTS];

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

if (bleuart.available ()) {

szín [j] = bleuart.read ();

j ++;

}

}

// Az összes led színre állítása

int méret = szélesség * magasság;

uint8_t *base_addr = pixelBuffer;

for (int i = 0; i <méret; i ++) {

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

*base_addr = szín [j];

base_addr ++;

}

}

// Pufferek cseréje

Serial.println (F ("A ClearColor befejeződött"));

swapBuffers ();

if (összetevők == 3) {

Serial.printf ("\ t világos (%d, %d, %d) n", szín [0], szín [1], szín [2]);

}

más {

Serial.printf ("\ t világos (%d, %d, %d, %d) n", szín [0], szín [1], szín [2], szín [3]);

}

// Kész

sendResponse ("OK");

}

void commandSetPixel () {

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

// Olvasási pozíció

uint8_t x = bleuart.read ();

uint8_t y = bleuart.read ();

// Olvassa el a színeket

uint32_t pixelOffset = y*szélesség+x;

uint32_t pixelDataOffset = pixelOffset*összetevők;

uint8_t *base_addr = pixelBuffer+pixelDataOffset;

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

if (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

// Állítsa be a színeket

uint32_t neopixelIndex = y*lépés+x;

uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;

uint32_t szín;

if (összetevők == 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, szín);

neopixel.show ();

// Kész

sendResponse ("OK");

}

void commandImage () {

Serial.printf ("Parancs: Kép %dx %d, %d, %d / n", szélesség, magasság, összetevők, lépés);

// Új pixelpuffer fogadása

int méret = szélesség * magasság;

uint8_t *base_addr = pixelBuffer;

for (int i = 0; i <méret; i ++) {

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

if (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

/*

if (összetevők == 3) {

uint32_t index = i*összetevők;

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

}

*/

}

// Pufferek cseréje

Serial.println (F ("Kép érkezett"));

swapBuffers ();

// Kész

sendResponse ("OK");

}

void sendResponse (char const *response) {

Serial.printf ("Válasz küldése: %s / n", válasz);

bleuart.write (válasz, strlen (válasz)*sizeof (char));

}

3. lépés: 3. lépés: Lámpaernyő vásárlása

3. lépés: Lámpaernyő vásárlása
3. lépés: Lámpaernyő vásárlása
3. lépés: Lámpaernyő vásárlása
3. lépés: Lámpaernyő vásárlása

4. lépés: 4. lépés: Húzza össze mindent

Ajánlott: