Turinys:

Tikras iššūkis: 5 žingsniai
Tikras iššūkis: 5 žingsniai

Video: Tikras iššūkis: 5 žingsniai

Video: Tikras iššūkis: 5 žingsniai
Video: Donatas Gudelis: 5 žingsniai sėkmingai e. parduotuvės plėtrai užsienyje 2024, Liepa
Anonim
Image
Image
1 žingsnis: lituokite grandinę
1 žingsnis: lituokite grandinę

Šiuolaikinis pasaulis reikalauja, kad žmonės pasitrauktų iš fizinio gyvenimo ir gyventų skaitmeninėje erdvėje.

Atsiradus „Al“ir plintant technologijoms, žmonės per daug pasitiki mašina ir mano, kad ji visada teisinga.

„Tikrai“skirtas suklaidinti šį klaidingą pasitikėjimą sukuriant suklastotą melo detektoriaus testą. Žmonės lengvai patikės, kad „Tikrai veikia“, tačiau kai bus pateikti klaidingi atsakymai, tai sukrės jų aklą pasitikėjimą technologijomis.

1 veiksmas: 1 žingsnis: lituokite grandinę

Kadangi mano kūriniuose yra tik viena šviesa, todėl labai lengva lituoti. Pagrindinė problema yra pradžioje, lituoju dvi šviesas, bet ne iš karto uždengiau ekspozicijos dalį. Taigi, kai abi laidų dalys liečiasi. Tai sutrumpėja.

2 veiksmas: 2 žingsnis: parašykite kodą

p.p1 {paraštė: 0.0px 0.0px 0.0px 0.0px; linijos aukštis: 15,0 taškų; šriftas: 12.0px Times; spalva: #000000; fono spalva: #ffffff}

p.p2 {paraštė: 0.0px 0.0px 0.0px 0.0px; linijos aukštis: 15,0 taškų; šriftas: 12.0px Times; spalva: #000000; fono spalva: #ffffff; min-height: 14.0px} span.s1 {font-kerning: none}

2 žingsnis: parašykite kodą

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

Tai yra mūsų „nRF52“pagrįstų „Bluefruit LE“modulių pavyzdys

Išsirinkite vieną šiandien „adafruit“parduotuvėje!

„Adafruit“investuoja laiką ir išteklius teikdama šį atvirojo kodo kodą, pirkdami palaikykite „Adafruit“ir atvirojo kodo aparatinę įrangą

produktai iš „Adafruit“!

MIT licencija, daugiau informacijos rasite LICENCIJOJE

Turi būti įtrauktas visas aukščiau esantis tekstas ir žemiau esantis ekranas

bet koks perskirstymas

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

/ Šis eskizas skirtas naudoti su „NeoPixel“valdikliu

// paviršius „Adafruit“mobiliojoje programoje „Bluefruit LE Connect“.

/

/ - Sudarykite ir nubraukite šį eskizą prie nRF52 plunksnos

// - Atidarykite „Bluefruit LE Connect“programą

// - Perjunkite į „NeoPixel“įrankį

// - Norėdami užmegzti ryšį, spustelėkite mygtuką „prisijungti“ir

// siųsti metaduomenis apie pikselių išdėstymą

// - Naudokite „NeoPixel“įrankį, kad atnaujintumėte savo įrenginio taškus

/* PASTABA: šiam eskizui reikalinga bent 1.1.0 versija „Adafruit_Neopixel“!!! */

#įtraukti

#įtraukti

#įtraukti

#define NEOPIXEL_VERSION_STRING „Neopixel v2.0“

#define PIN 16 / * Smeigtukas, naudojamas „NeoPixels“įrenginiams vairuoti * /

#define MAXCOMPONENTS 4

uint8_t *pixelBuffer = NULL;

uint8_t plotis = 0;

uint8_t aukštis = 0;

uint8_t stride;

uint8_t componentsValue;

bool yra 400 Hz;

uint8_t komponentai = 3; // tik 3 ir 4 yra tinkamos reikšmės

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();

// BLE paslauga

BLEDfu bledfu;

BLEDis bledis;

BLEUart bleuart;

negaliojanti sąranka ()

{

Serial.begin (115200);

o (! Serijinis) uždelsimas (10); // skirtas nrf52840 su vietine USB

Serial.println („Adafruit Bluefruit Neopixel Test“);

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

Serial.println ();

Serial.println („Prašome prisijungti naudojant„ Bluefruit Connect LE “programą“);

// Konfigūruoti neopikselius

neopixel.begin ();

// Init Bluefruit

Bluefruit.begin ();

Bluefruit.setTxPower (4); // Patikrinkite bluefruit.h, ar yra palaikomų verčių

Bluefruit.setName ("Bluefruit52");

Bluefruit. Periph.setConnectCallback (connect_callback);

// Siekiant nuoseklumo, pirmiausia reikia pridėti OTA DFU, jei jis yra

bledfu.begin ();

// Įrenginio informacijos paslaugos konfigūravimas ir paleidimas

bledis.setManufacturer ("Adafruit Industries");

bledis.setModel ("Mėlynųjų vaisių plunksna52");

bledis.begin ();

// Konfigūruokite ir paleiskite „BLE UART“paslaugą

bleuart.begin ();

// Nustatykite ir pradėkite reklamuoti

startAdv ();

}

void startAdv (negalioja)

{

// Reklamos paketas

„Bluefruit. Advertising.addFlags“(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);

Bluefruit. Advertising.addTxPower ();

// Įtraukti 128 bitų bleuart uuid

Bluefruit. Advertising.addService (bleuart);

// Antrinis nuskaitymo atsako paketas (neprivaloma)

// Kadangi reklamos pakete nėra vietos „Vardui“

Bluefruit. ScanResponse.addName ();

/* Pradėti reklamą

* - Įjunkite automatinę reklamą, jei ji atjungta

* - Intervalas: greitas režimas = 20 ms, lėtas režimas = 152,5 ms

* - Greitojo režimo laikas baigėsi 30 sekundžių

* - Pradėti (skirtasis laikas) su skirtuoju laiku = 0 reklamuos amžinai (kol neprisijungs)

*

* Rekomenduojamas reklamos intervalas

*

*/

Bluefruit. Advertising.restartOnDisconnect (tiesa);

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

Bluefruit. Advertising.setFastTimeout (30); // sekundžių skaičius greitu režimu

Bluefruit. Advertising.start (0); // 0 = Nenutraukite reklamos po n sekundės

}

void connect_callback (uint16_t conn_handle)

{

// Gaukite nuorodą į dabartinį ryšį

BLEConnection* connection = Bluefruit. Connection (conn_handle);

char centrinis_pavadinimas [32] = {0};

ryšys-> getPeerName (centrinis_pavadinimas, dydis (centrinis_pavadinimas));

Serial.print ("Prisijungta");

Serial.println (centrinis_pavadinimas);

Serial.println („Prašome pasirinkti skirtuką„ Neopikseliai “, spustelėkite„ Prisijungti “ir linksminkitės“);

}

tuštumos kilpa ()

{

// Aidas gavo duomenis

jei [Bluefruit.connected () && bleuart.notifyEnabled ()]

{

int komanda = bleuart.read ();

jungiklis (komanda) {

atvejis „V“: {// Gauti versiją

commandVersion ();

pertrauka;

}

atvejis „S“: {// Sąrankos matmenys, komponentai, žingsnis…

commandSetup ();

pertrauka;

}

atvejis „C“: {// Skaidrus naudojant spalvą

commandClearColor ();

pertrauka;

}

atvejis „B“: {// Nustatykite ryškumą

commandSetBrightness ();

pertrauka;

}

atvejis „P“: {// „Set Pixel“

commandSetPixel ();

pertrauka;

}

atvejis „aš“: {// Gauti naują vaizdą

commandImage ();

pertrauka;

}

}

}

}

void swapBuffers ()

{

uint8_t *base_addr = pixelBuffer;

int pixelIndex = 0;

(int j = 0; j <aukštis; j ++)

{

(int i = 0; i <plotis; i ++) {

if (komponentai == 3) {

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

}

Kitas {

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

}

base_addr+= komponentai;

pixelIndex ++;

}

pixelIndex += žingsnis - plotis; // Perkelkite „pixelIndex“į kitą eilutę (atsižvelkite į žingsnį)

}

neopixel.show ();

}

void commandVersion () {

Serial.println (F ("Komanda: versijos patikrinimas"));

sendResponse (NEOPIXEL_VERSION_STRING);

}

void commandSetup () {

Serial.println (F ("Komanda: sąranka"));

plotis = bleuart.read ();

aukštis = bleuart.read ();

žingsnis = bleuart.read ();

componentsValue = bleuart.read ();

is400Hz = bleuart.read ();

neoPixelType pixelType;

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

komponentai = (komponentaiVertė == NEO_RGB || komponentaiVertė == NEO_RBG || komponentaiVertė == NEO_GRB || komponentaiVertė == NEO_GBR || komponentaiVertė == NEO_BRG || komponentaiVertė == NEO_BGR)? 3: 4;

Serial.printf ("\ tsize: %dx %d / n", plotis, aukštis);

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

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

Serial.printf ("\ tkomponentai: %d / n", komponentai);

if (pixelBuffer! = NULL) {

ištrinti pixelBuffer;

}

uint32_t dydis = plotis*aukštis;

pixelBuffer = naujas uint8_t [dydis*komponentai];

neopixel.updateLength (dydis);

neopixel.updateType (pixelType);

neopixel.setPin (PIN);

// Padaryta

sendResponse („Gerai“);

}

void commandSetBrightness () {

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

// Skaityti reikšmę

uint8_t ryškumas = bleuart.read ();

// Nustatykite ryškumą

neopixel.setBrightness (ryškumas);

// Atnaujinti pikselius

swapBuffers ();

// Padaryta

sendResponse („Gerai“);

}

void commandClearColor () {

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

// Skaityti spalvą

uint8_t color [MAXCOMPONENTS];

už (int j = 0; j <komponentai;) {

jei (bleuart.available ()) {

spalva [j] = bleuart.read ();

j ++;

}

}

// Nustatykite visas lemputes į spalvas

int dydis = plotis * aukštis;

uint8_t *base_addr = pixelBuffer;

(int i = 0; i <dydis; i ++) {

(int j = 0; j <komponentai; j ++) {

*base_addr = spalva [j];

base_addr ++;

}

}

// Sukeisti buferius

Serial.println (F („ClearColor baigta“));

swapBuffers ();

if (komponentai == 3) {

Serial.printf ("\ taiškus (%d, %d, %d) n", spalva [0], spalva [1], spalva [2]);

}

Kitas {

Serial.printf ("\ t aiškus (%d, %d, %d, %d) n", spalva [0], spalva [1], spalva [2], spalva [3]);

}

// Padaryta

sendResponse („Gerai“);

}

void commandSetPixel () {

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

// Skaityti poziciją

uint8_t x = bleuart.read ();

uint8_t y = bleuart.read ();

// Skaityti spalvas

uint32_t pixelOffset = y*plotis+x;

uint32_t pixelDataOffset = pixelOffset*komponentai;

uint8_t *base_addr = pixelBuffer+pixelDataOffset;

už (int j = 0; j <komponentai;) {

jei (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

// Nustatykite spalvas

uint32_t neopixelIndex = y*žingsnis+x;

uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;

uint32_t spalva;

if (komponentai == 3) {

spalva = neopikselis. Color (*pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2));

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

}

Kitas {

spalva = neopikselis. 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, spalva);

neopixel.show ();

// Padaryta

sendResponse („Gerai“);

}

void commandImage () {

Serial.printf ("Komanda: vaizdas %dx %d, %d, %d / n", plotis, aukštis, komponentai, žingsnis);

// Gauti naują pikselių buferį

int dydis = plotis * aukštis;

uint8_t *base_addr = pixelBuffer;

(int i = 0; i <dydis; i ++) {

už (int j = 0; j <komponentai;) {

jei (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

/*

if (komponentai == 3) {

uint32_t indeksas = i*komponentai;

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

}

*/

}

// Sukeisti buferius

Serial.println (F („Vaizdas gautas“));

swapBuffers ();

// Padaryta

sendResponse („Gerai“);

}

void sendResponse (char const *response) {

Serial.printf ("Siųsti atsakymą: %s / n", atsakymas);

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

}

3 veiksmas: 3 žingsnis: lempos pirkimas

3 žingsnis: lempos pirkimas
3 žingsnis: lempos pirkimas
3 žingsnis: lempos pirkimas
3 žingsnis: lempos pirkimas

4 žingsnis: 4 žingsnis: ištraukite viską kartu

Rekomenduojamas: