Sadržaj:

Zaista izazov: 5 koraka
Zaista izazov: 5 koraka

Video: Zaista izazov: 5 koraka

Video: Zaista izazov: 5 koraka
Video: ПОЛТЕРГЕЙСТ 5 УРОВНЯ СНОВА НЕ ДАЕТ ПОКОЯ, ЖУТКАЯ АКТИВНОСТЬ / LEVEL 5 POLTERGEIST, CREEPY ACTIVITY 2024, Prosinac
Anonim
Image
Image
Korak 1: Lemite krug
Korak 1: Lemite krug

Suvremeni svijet zahtijeva od ljudi da izađu iz fizičkog i žive unutar digitalnog.

Pojavom Al i širenjem tehnologije ljudi previše vjeruju stroju i vjeruju da je uvijek ispravan.

"Stvarno" namjerava poljuljati ovo lažno povjerenje stvaranjem lažnog testa detektora laži. Ljudi će lako povjerovati da Doista djeluje, ali ako se dobiju lažni odgovori, poljuljat će njihovo slijepo povjerenje u tehnologiju.

Korak 1: Korak 1: Lemljenje kruga

Budući da moji radovi imaju samo jedno svjetlo, pa ih je vrlo lako lemiti. Glavni problem je na početku, lemio sam dva svjetla, ali nisam odmah pokrio dio ekspozicije. Dakle, kad se dvije žice dijele zajedno. Kratko je ispalo.

Korak 2: Korak 2: Napišite kôd

p.p1 {margina: 0.0px 0.0px 0.0px 0.0px; linija-visina: 15,0px; font: 12,0px puta; boja: #000000; boja pozadine: #ffffff}

p.p2 {margina: 0.0px 0.0px 0.0px 0.0px; linija-visina: 15,0px; font: 12,0px puta; boja: #000000; background-color: #ffffff; min-height: 14.0px} span.s1 {font-kerning: none}

Korak 2: Napišite kôd

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

Ovo je primjer za naše module Bluefruit LE zasnovane na nRF52

Odaberite jednu danas u trgovini adafruit!

Adafruit ulaže vrijeme i resurse pružajući ovaj otvoreni kod, molimo vas da kupnjom podržite Adafruit i hardver otvorenog koda

proizvodi iz Adafruta!

MIT licencu, provjerite LICENCE za više informacija

Sav gornji tekst i donji ekran ispod moraju biti uključeni u

svaku preraspodjelu

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

/ Ova skica namjerava se koristiti s NeoPixel kontrolom

// površina u mobilnoj aplikaciji Bluefruit LE Connect tvrtke Adafruit.

/

/ - Sastavite i bljesnite ovu skicu na nRF52 pero

// - Otvorite aplikaciju Bluefruit LE Connect

// - Prebacite se na uslužni program NeoPixel

// - Pritisnite gumb 'poveži se' za uspostavu veze i

// šalje metapodatke o rasporedu piksela

// - Pomoću uslužnog programa NeoPixel ažurirajte piksele na svom uređaju

/* NAPOMENA: Ova skica je zahtijevala barem verziju 1.1.0 Adafruit_Neopixela !!! */

#uključi

#uključi

#uključi

#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"

#define PIN 16 / * Pin koji se koristi za pogon NeoPixela * /

#definirajte MAXKOMPONENTE 4

uint8_t *pixelBuffer = NULL;

uint8_t širina = 0;

uint8_t visina = 0;

uint8_t korak;

uint8_t componentsValue;

bool je 400Hz;

uint8_t komponente = 3; // samo su 3 i 4 valjane vrijednosti

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();

// BLE usluga

BLEDfu bledfu;

BLEDis bledis;

BLEUart bleuart;

void setup ()

{

Serial.begin (115200);

while (! Serijsko) kašnjenje (10); // za nrf52840 s izvornim USB -om

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

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

Serial.println ();

Serial.println ("Molimo vas da se povežete pomoću aplikacije Bluefruit Connect LE");

// Konfiguriranje neopiksela

neopixel.begin ();

// Init Bluefruit

Bluefruit.begin ();

Bluefruit.setTxPower (4); // Provjerite podržavaju li bluefruit.h vrijednosti

Bluefruit.setName ("Bluefruit52");

Bluefruit. Periph.setConnectCallback (connect_callback);

// OTA DFU treba dodati ako postoji ako postoji

bledfu.begin ();

// Konfiguriranje i pokretanje informacijske usluge uređaja

bledis.setManufacturer ("Adafruit Industries");

bledis.setModel ("Perje plavog voća52");

bledis.begin ();

// Konfigurirajte i pokrenite BLE UART uslugu

bleuart.begin ();

// Postavljanje i početak oglašavanja

startAdv ();

}

void startAdv (void)

{

// Reklamni paket

Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);

Bluefruit. Advertising.addTxPower ();

// Uključuje bleuart 128-bitni uuid

Bluefruit. Advertising.addService (bleuart);

// Sekundarni paket odgovora na skeniranje (izborno)

// Budući da u oglasnom paketu nema mjesta za 'Ime'

Bluefruit. ScanResponse.addName ();

/* Počnite se oglašavati

* - Omogućite automatsko oglašavanje ako je isključeno

* - Interval: brzi način = 20 ms, spori način = 152,5 ms

* - Vrijeme čekanja za brzi način rada je 30 sekundi

* - Start (timeout) s timeout = 0 će se oglašavati zauvijek (dok se ne poveže)

*

* Za preporučeni interval oglašavanja

*

*/

Bluefruit. Advertising.restartOnDisconnect (istina);

Bluefruit. Advertising.setInterval (32, 244); // u jedinici od 0,625 ms

Bluefruit. Advertising.setFastTimeout (30); // broj sekundi u brzom načinu rada

Bluefruit. Advertising.start (0); // 0 = Ne prekidajte oglašavanje nakon n sekundi

}

void connect_callback (uint16_t conn_handle)

{

// Dobivanje reference na trenutnu vezu

BLEConnection* connection = Bluefruit. Connection (conn_handle);

char central_name [32] = {0};

veza-> getPeerName (centralno_ime, veličinaof (središnje_ime));

Serial.print ("Povezano s");

Serial.println (centralno_ime);

Serial.println ("Molimo odaberite karticu" Neopikseli ", kliknite" Poveži se "i zabavite se");

}

void loop ()

{

// Odjek primljenih podataka

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

{

int naredba = bleuart.read ();

switch (naredba) {

case 'V': {// Preuzmi verziju

commandVersion ();

pauza;

}

case 'S': {// Postavke dimenzija, komponente, korak …

commandSetup ();

pauza;

}

slučaj 'C': {// Očisti bojom

commandClearColor ();

pauza;

}

slučaj 'B': {// Postavi svjetlinu

commandSetBrightness ();

pauza;

}

case 'P': {// Postavi Pixel

commandSetPixel ();

pauza;

}

case 'I': {// Primite novu sliku

commandImage ();

pauza;

}

}

}

}

void swapBuffers ()

{

uint8_t *base_addr = pixelBuffer;

int pixelIndex = 0;

za (int j = 0; j <visina; j ++)

{

za (int i = 0; i <širina; i ++) {

if (komponente == 3) {

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

}

drugo {

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

}

base_addr+= komponente;

pixelIndex ++;

}

pixelIndex += stride - width; // Premještanje pixelIndex u sljedeći redak (uzmite u obzir korak)

}

neopixel.show ();

}

void commandVersion () {

Serial.println (F ("Naredba: provjera verzije"));

sendResponse (NEOPIXEL_VERSION_STRING);

}

void commandSetup () {

Serial.println (F ("Naredba: Postavljanje"));

width = bleuart.read ();

visina = bleuart.read ();

stride = bleuart.read ();

componentsValue = bleuart.read ();

is400Hz = bleuart.read ();

neoPixelType pixelType;

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

komponente = (komponenteVrijednost == NEO_RGB || komponenteVrijednost == NEO_RBG || komponenteVrijednost == NEO_GRB || komponenteVrijednost == NEO_GBR || komponenteVrijednost == NEO_BRG || komponenteVrijednost == NEO_BGR)? 3: 4;

Serial.printf ("\ tsize: %dx %d / n", širina, visina);

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

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

Serial.printf ("\ tkomponente: %d / n", komponente);

if (pixelBuffer! = NULL) {

delete pixelBuffer;

}

uint32_t veličina = širina*visina;

pixelBuffer = novi uint8_t [veličina*komponente];

neopixel.updateLength (veličina);

neopixel.updateType (pixelType);

neopixel.setPin (PIN);

// Gotovo

sendResponse ("U redu");

}

void commandSetBrightness () {

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

// Očitana vrijednost

uint8_t svjetlina = bleuart.read ();

// Postavljanje svjetline

neopixel.setBrightness (svjetlina);

// Osvježavanje piksela

swapBuffers ();

// Gotovo

sendResponse ("U redu");

}

void commandClearColor () {

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

// Čitanje boje

uint8_t boja [MAXCOMPONENTS];

za (int j = 0; j <komponente;) {

if (bleuart.available ()) {

boja [j] = bleuart.read ();

j ++;

}

}

// Postavi sve LED diode u boju

int veličina = širina * visina;

uint8_t *base_addr = pixelBuffer;

za (int i = 0; i <veličina; i ++) {

za (int j = 0; j <komponente; j ++) {

*base_addr = boja [j];

base_addr ++;

}

}

// Zamijenite međuspremnike

Serial.println (F ("ClearColor dovršeno"));

swapBuffers ();

if (komponente == 3) {

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

}

drugo {

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

}

// Gotovo

sendResponse ("U redu");

}

void commandSetPixel () {

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

// Očitajte položaj

uint8_t x = bleuart.read ();

uint8_t y = bleuart.read ();

// Čitanje boja

uint32_t pixelOffset = y*širina+x;

uint32_t pixelDataOffset = pixelOffset*komponente;

uint8_t *base_addr = pixelBuffer+pixelDataOffset;

za (int j = 0; j <komponente;) {

if (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

// Postavljanje boja

uint32_t neopixelIndex = y*korak+x;

uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;

boja uint32_t;

if (komponente == 3) {

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

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

}

drugo {

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

neopixel.show ();

// Gotovo

sendResponse ("U redu");

}

void commandImage () {

Serial.printf ("Naredba: Slika %dx %d, %d, %d / n", širina, visina, komponente, korak);

// Primanje novog međuspremnika piksela

int veličina = širina * visina;

uint8_t *base_addr = pixelBuffer;

za (int i = 0; i <veličina; i ++) {

za (int j = 0; j <komponente;) {

if (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

/*

if (komponente == 3) {

uint32_t indeks = i*komponente;

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

}

*/

}

// Zamijenite međuspremnike

Serial.println (F ("Slika je primljena"));

swapBuffers ();

// Gotovo

sendResponse ("U redu");

}

void sendResponse (char const *odgovor) {

Serial.printf ("Pošalji odgovor: %s / n", odgovor);

bleuart.write (odgovor, strlen (odgovor)*veličinaof (char));

}

Korak 3: Korak 3: Kupnja sjenila

Korak 3: Kupnja sjenila
Korak 3: Kupnja sjenila
Korak 3: Kupnja sjenila
Korak 3: Kupnja sjenila

Korak 4: Korak 4: Povucite sve zajedno

Preporučeni: