Sisällysluettelo:

Todella haaste: 5 vaihetta
Todella haaste: 5 vaihetta

Video: Todella haaste: 5 vaihetta

Video: Todella haaste: 5 vaihetta
Video: Днестр- от истока до моря Часть 5 Завалы на реке Сплав по реке 2024, Heinäkuu
Anonim
Image
Image
Vaihe 1: Juotospiiri
Vaihe 1: Juotospiiri

Nykymaailma vaatii ihmisiä poistumaan fyysisestä ja elämään digitaalisessa maailmassa.

Alin ulkonäön ja teknologian lisääntymisen myötä ihmiset luottavat liikaa koneeseen ja uskovat sen olevan aina oikein.

"Todella" on tarkoitettu horjuttamaan tätä väärää luottamusta luomalla väärennetty valheenilmaisin. Ihmiset uskovat helposti, että todella toimii, mutta väärien vastausten antaminen horjuttaa heidän sokean luottamuksensa tekniikkaan.

Vaihe 1: Vaihe 1: Juotospiiri

Koska teoksissani on vain yksi valo, se on erittäin helppo juottaa. Suurin ongelma on alussa, juotin kaksi valoa, mutta en peittänyt valotusosaa heti. Joten kun kaksi johtoa osuvat yhteen. Se lyhenee.

Vaihe 2: Vaihe 2: Kirjoita koodi

p.p1 {marginaali: 0.0px 0.0px 0.0px 0.0px; linjan korkeus: 15,0 pikseliä; kirjasin: 12.0px Times; väri: #000000; taustaväri: #ffffff}

p.p2 {marginaali: 0.0px 0.0px 0.0px 0.0px; linjan korkeus: 15,0 pikseliä; kirjasin: 12.0px Times; väri: #000000; taustaväri: #ffffff; min-height: 14.0px} span.s1 {font-kerning: none}

Vaihe 2: Kirjoita koodi

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

Tämä on esimerkki nRF52 -pohjaisista Bluefruit LE -moduuleistamme

Hae yksi tänään adafruit -kaupasta!

Adafruit investoi aikaa ja resursseja tämän avoimen lähdekoodin tarjoamiseen, tue Adafruitia ja avoimen lähdekoodin laitteistoa ostamalla

Adafruutin tuotteita!

MIT -lisenssi, tarkista LISENSSI saadaksesi lisätietoja

Kaikki yllä oleva teksti ja alla oleva aloitusnäyttö on sisällytettävä

mikä tahansa uudelleenjako

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

/ Tämä luonnos on tarkoitettu käytettäväksi NeoPixel -ohjaimen kanssa

// pinta Adafruitin Bluefruit LE Connect -mobiilisovelluksessa.

/

/ - Kokoa ja väläytä tämä luonnos nRF52 Featheriin

// - Avaa Bluefruit LE Connect -sovellus

// - Vaihda NeoPixel -apuohjelmaan

// - Napsauta 'connect' -painiketta muodostaaksesi yhteyden ja

// lähettää metatietoja pikseliasettelusta

// - Päivitä laitteen pikselit NeoPixel -apuohjelman avulla

/* HUOMAUTUS: Tämä luonnos vaati vähintään Adafruit_Neopixel -version 1.1.0 !!! */

#sisältää

#sisältää

#sisältää

#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"

#define PIN 16 / * NeoPixels -ajokortti * /

#define MAXCOMPONENTS 4

uint8_t *pixelBuffer = NULL;

uint8_t width = 0;

uint8_t korkeus = 0;

uint8_t stride;

uint8_t componentsValue;

bool on 400 Hz;

uint8_t komponentit = 3; // vain 3 ja 4 ovat kelvollisia arvoja

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();

// BLE -palvelu

BLEDfu bledfu;

BLEDis bledis;

BLEUart bleuart;

mitätön asennus ()

{

Sarja.alku (115200);

kun (! sarja) viive (10); // numerolle nrf52840 natiivin USB: n kanssa

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

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

Sarja.println ();

Serial.println ("Muodosta yhteys Bluefruit Connect LE -sovelluksella");

// Määritä neopikselit

neopixel.begin ();

// Init Bluefruit

Bluefruit.begin ();

Bluefruit.setTxPower (4); // Tarkista bluefruit.h: sta tuetut arvot

Bluefruit.setName ("Bluefruit52");

Bluefruit. Periph.setConnectCallback (connect_callback);

// Johdonmukaisuuden vuoksi OTA DFU on lisättävä ensin, jos sellainen on

bledfu.begin ();

// Laitetietopalvelun määrittäminen ja käynnistäminen

bledis.setManufacturer ("Adafruit Industries");

bledis.setModel ("Bluefruit Feather52");

bledis.begin ();

// Määritä ja käynnistä BLE UART -palvelu

bleuart.begin ();

// Määritä ja aloita mainonta

startAdv ();

}

void startAdv (mitätön)

{

// Mainospaketti

Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);

Bluefruit. Advertising.addTxPower ();

// Sisällytä 128-bittinen bleuart uuid

Bluefruit. Advertising.addService (bleuart);

// Toissijaisen skannauksen vastauspaketti (valinnainen)

// Koska mainospaketissa ei ole tilaa nimelle

Bluefruit. ScanResponse.addName ();

/* Aloita mainonta

* - Ota automaattinen mainonta käyttöön, jos yhteys on katkaistu

* - Väli: nopea tila = 20 ms, hidas tila = 152,5 ms

* - Nopean tilan aikakatkaisu on 30 sekuntia

* - Aloita (aikakatkaisu) ja aikakatkaisu = 0 mainostaa ikuisesti (kunnes yhteys)

*

* Suositeltu mainosväli

*

*/

Bluefruit. Advertising.restartOnDisconnect (tosi);

Bluefruit. Advertising.setInterval (32, 244); // 0,625 ms: n yksikössä

Bluefruit. Advertising.setFastTimeout (30); // sekuntien määrä nopeassa tilassa

Bluefruit. Advertising.start (0); // 0 = Älä lopeta mainostamista n sekunnin kuluttua

}

void connect_callback (uint16_t conn_handle)

{

// Hae viittaus nykyiseen yhteyteen

BLEConnection* yhteys = Bluefruit. Connection (conn_handle);

char -keskusnimi [32] = {0};

yhteys-> getPeerName (keskimmäinen_nimi, koko (keski_nimi));

Serial.print ("Yhdistetty");

Sarja.println (keskusnimi);

Serial.println ("Valitse" Neopikselit "-välilehti, napsauta" Yhdistä "ja pidä hauskaa");

}

tyhjä silmukka ()

{

// Echo vastaanotti tietoja

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

{

int -komento = bleuart.read ();

kytkin (komento) {

tapaus 'V': {// Hae versio

commandVersion ();

tauko;

}

tapaus 'S': {// Asennusmitat, komponentit, askel…

commandSetup ();

tauko;

}

tapaus 'C': {// Kirkas väreillä

commandClearColor ();

tauko;

}

tapaus 'B': {// Aseta kirkkaus

commandSetBrightness ();

tauko;

}

tapaus 'P': {// Aseta Pixel

commandSetPixel ();

tauko;

}

tapaus 'I': {// Vastaanota uusi kuva

commandImage ();

tauko;

}

}

}

}

void swapPuskurit ()

{

uint8_t *base_addr = pixelBuffer;

int pixelIndex = 0;

(int j = 0; j <korkeus; j ++)

{

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

jos (komponentit == 3) {

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

}

muu {

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

}

base_addr+= komponentit;

pixelIndex ++;

}

pixelIndex += askel - leveys; // Siirrä pixelIndex seuraavalle riville (ota askel huomioon)

}

neopixel.show ();

}

void commandVersion () {

Serial.println (F ("Komento: Version tarkistus"));

sendResponse (NEOPIXEL_VERSION_STRING);

}

void commandSetup () {

Serial.println (F ("Komento: asennus"));

leveys = bleuart.read ();

korkeus = bleuart.read ();

askel = bleuart.read ();

komponentitArvo = bleuart.read ();

is400Hz = bleuart.read ();

neoPixelType pixelType;

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

komponentit = (komponentitArvo == NEO_RGB || komponentitArvo == NEO_RBG || komponentitArvo == NEO_GRB || komponentitArvo == NEO_GBR || komponentitArvo == NEO_BRG || komponentitArvo == NEO_BGR)? 3: 4;

Serial.printf ("\ tsize: %dx %d / n", leveys, korkeus);

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

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

Serial.printf ("\ tkomponentit: %d / n", komponentit);

jos (pixelBuffer! = NULL) {

poista pixelBuffer;

}

uint32_t koko = leveys*korkeus;

pixelBuffer = uusi uint8_t [koko*komponentit];

neopixel.updateLength (koko);

neopixel.updateType (pixelType);

neopixel.setPin (PIN);

// Valmis

sendResponse ("OK");

}

void commandSetBrightness () {

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

// Lue arvo

uint8_t kirkkaus = bleuart.read ();

// Aseta kirkkaus

neopixel.setBrightness (kirkkaus);

// Päivitä pikselit

swapPuskurit ();

// Valmis

sendResponse ("OK");

}

void commandClearColor () {

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

// Lue väri

uint8_t color [MAXCOMPONENTS];

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

jos (bleuart.available ()) {

väri [j] = bleuart.read ();

j ++;

}

}

// Aseta kaikki ledit väreiksi

int koko = leveys * korkeus;

uint8_t *base_addr = pixelBuffer;

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

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

*base_addr = väri [j];

base_addr ++;

}

}

// Vaihda puskurit

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

swapPuskurit ();

jos (komponentit == 3) {

Serial.printf ("\ t selkeä (%d, %d, %d) n", väri [0], väri [1], väri [2]);

}

muu {

Serial.printf ("\ t selkeä (%d, %d, %d, %d) n", väri [0], väri [1], väri [2], väri [3]);

}

// Valmis

sendResponse ("OK");

}

void commandSetPixel () {

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

// Lue sijainti

uint8_t x = bleuart.read ();

uint8_t y = bleuart.read ();

// Lue värit

uint32_t pixelOffset = y*leveys+x;

uint32_t pixelDataOffset = pixelOffset*komponentit;

uint8_t *base_addr = pixelBuffer+pixelDataOffset;

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

jos (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

// Aseta värit

uint32_t neopixelIndex = y*askel+x;

uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;

uint32_t väri;

jos (komponentit == 3) {

väri = neopikseli. Väri (*pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2));

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

}

muu {

väri = neopikseli. Väri (*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, väri);

neopixel.show ();

// Valmis

sendResponse ("OK");

}

void commandImage () {

Serial.printf ("Komento: Kuva %dx %d, %d, %d / n", leveys, korkeus, komponentit, askel);

// Vastaanota uusi pikselipuskuri

int koko = leveys * korkeus;

uint8_t *base_addr = pixelBuffer;

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

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

jos (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

/*

jos (komponentit == 3) {

uint32_t index = i*komponentit;

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

}

*/

}

// Vaihda puskurit

Serial.println (F ("Kuva vastaanotettu"));

swapPuskurit ();

// Valmis

sendResponse ("OK");

}

void sendResponse (char const *response) {

Serial.printf ("Lähetä vastaus: %s / n", vastaus);

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

}

Vaihe 3: Vaihe 3: Lampunvarjostimen ostaminen

Vaihe 3: Lampunvarjostimen ostaminen
Vaihe 3: Lampunvarjostimen ostaminen
Vaihe 3: Lampunvarjostimen ostaminen
Vaihe 3: Lampunvarjostimen ostaminen

Vaihe 4: Vaihe 4: Vedä kaikki yhteen

Suositeltava: