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, Juli
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 mašini i vjeruju da je uvijek ispravna.

"Stvarno" ima namjeru poljuljati ovo lažno povjerenje stvaranjem lažnog testa detektora laži. Ljudi će lako povjerovati da Stvarno funkcionira, ali ako se dobiju lažni odgovori, to će poljuljati njihovo slijepo povjerenje u tehnologiju.

Korak 1: Korak 1: Lemite krug

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

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 Times; boja: #000000; boja pozadine: #ffffff}

p.p2 {margina: 0.0px 0.0px 0.0px 0.0px; linija-visina: 15.0px; font: 12.0px Times; boja: #000000; background-color: #ffffff; min-visina: 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 adafruit shopu!

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

proizvodi iz Adafruit -a!

MIT licencu, provjerite LICENCE za više informacija

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

svaku preraspodjelu

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

/ Ova skica je namijenjena za upotrebu sa NeoPixel kontrolom

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

/

/ - Sastavite i fleširajte ovu skicu na nRF52 pero

// - Otvorite aplikaciju Bluefruit LE Connect

// - Prebacite se na uslužni program NeoPixel

// - Pritisnite dugme za povezivanje da biste uspostavili vezu i

// šalje metapodatke o rasporedu piksela

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

/* NAPOMENA: Ova skica je zahtijevala najmanje verziju 1.1.0 Adafruit_Neopixel !!! */

#include

#include

#include

#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"

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

#define MAXCOMPONENTS 4

uint8_t *pixelBuffer = NULL;

uint8_t width = 0;

uint8_t visina = 0;

uint8_t korak;

uint8_t componentsValue;

bool je 400Hz;

uint8_t komponente = 3; // samo 3 i 4 su važeće 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 koristeći aplikaciju Bluefruit Connect LE");

// Konfiguracija neopiksela

neopixel.begin ();

// Init Bluefruit

Bluefruit.begin ();

Bluefruit.setTxPower (4); // Provjerite bluefruit.h za podržane 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 (opcionalno)

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

Bluefruit. ScanResponse.addName ();

/* Započni oglašavanje

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

* - Interval: brzi režim = 20 ms, spori režim = 152,5 ms

* - Vremensko ograničenje za brzi način rada je 30 sekundi

* - Start (timeout) sa timeout = 0 će se oglasiti zauvijek (dok se ne povežete)

*

* Za preporučeni interval oglašavanja

*

*/

Bluefruit. Advertising.restartOnDisconnect (true);

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 centralno_ime [32] = {0};

veza-> getPeerName (centralno_ime, veličina (centralno_ime));

Serial.print ("Povezano sa");

Serial.println (centralno_ime);

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

}

void loop ()

{

// Eho primljeni podaci

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

{

int naredba = bleuart.read ();

switch (naredba) {

case 'V': {// Preuzmi verziju

commandVersion ();

break;

}

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

commandSetup ();

break;

}

case 'C': {// Očisti bojom

commandClearColor ();

break;

}

case 'B': {// Postavi svjetlinu

commandSetBrightness ();

break;

}

case 'P': {// Postavi Pixel

commandSetPixel ();

break;

}

case 'I': {// Primite novu sliku

commandImage ();

break;

}

}

}

}

void swapBuffers ()

{

uint8_t *base_addr = pixelBuffer;

int pixelIndex = 0;

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

{

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

if (komponente == 3) {

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

}

else {

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

}

base_addr+= komponente;

pixelIndex ++;

}

pixelIndex += stride - width; // Premjestite pixelIndex u sljedeći red (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 ();

height = bleuart.read ();

stride = bleuart.read ();

componentsValue = bleuart.read ();

is400Hz = bleuart.read ();

neoPixelType pixelType;

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

components = (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", š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 ("OK");

}

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 ("OK");

}

void commandClearColor () {

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

// Očitavanje boje

uint8_t boja [MAXCOMPONENTS];

for (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;

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

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

*base_addr = boja [j];

base_addr ++;

}

}

// Zamijenite međuspremnike

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

swapBuffers ();

if (komponente == 3) {

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

}

else {

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

}

// Gotovo

sendResponse ("OK");

}

void commandSetPixel () {

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

// Pozicija čitanja

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;

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

if (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

// Postavljanje boja

uint32_t neopixelIndex = y*stride+x;

uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;

uint32_t boja;

if (komponente == 3) {

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

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

}

else {

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 ("OK");

}

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;

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

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

if (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

/*

if (komponente == 3) {

uint32_t index = 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 ("OK");

}

void sendResponse (char const *odgovor) {

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

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

}

Korak 3: Korak 3: Kupovina sjenila

Korak 3: Kupovina sjenila
Korak 3: Kupovina sjenila
Korak 3: Kupovina sjenila
Korak 3: Kupovina sjenila

Korak 4: Korak 4: Povucite sve zajedno

Preporučuje se: