Talaan ng mga Nilalaman:

Talagang Hamon: 5 Hakbang
Talagang Hamon: 5 Hakbang

Video: Talagang Hamon: 5 Hakbang

Video: Talagang Hamon: 5 Hakbang
Video: I Belong To The Zoo | Balang Araw | Lyrics 2024, Nobyembre
Anonim
Image
Image
Hakbang 1: Maghinang sa Circuit
Hakbang 1: Maghinang sa Circuit

Kinakailangan ng modernong mundo ang mga tao na lumabas sa pisikal at mabuhay sa loob ng digital.

Sa paglitaw ng Al at ang paglaganap ng teknolohiya ang mga tao ay labis na nagtiwala sa makina at naniniwala na palaging tama.

Inilaan ang "Totoong" upang alugin ang maling tiwala sa pamamagitan ng paglikha ng isang pekeng pagsubok ng lie detector. Madaling maniwala ang mga tao na gumagana talaga ang Totoo ngunit kapag ibinigay ang maling sagot ay makakalog ng kanilang bulag na pagtitiwala sa teknolohiya.

Hakbang 1: Hakbang 1: Maghinang sa Circuit

Dahil ang aking mga gawa ay mayroon lamang isang ilaw, kaya napakadaling maghinang. Ang pangunahing problema ay sa simula, maghinang ako ng dalawang ilaw, ngunit hindi ko agad sinakop ang bahagi ng pagkakalantad. Kaya't kapag ang dalawang bahagi ng wires ay magkadikit. Maikli ito.

Hakbang 2: Hakbang 2: Isulat ang Code

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; taas ng linya: 15.0px; font: 12.0px Times; kulay: # 000000; background-color: #ffffff}

p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; taas ng linya: 15.0px; font: 12.0px Times; kulay: # 000000; background-color: #ffffff; min-taas: 14.0px} span.s1 {font-kerning: none}

Hakbang 2: Isulat ang Code

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

Ito ay isang halimbawa para sa aming nRF52 batay sa mga module ng Bluefruit LE

Pumili ng isa ngayon sa adafruit shop!

Namumuhunan ang adafruit ng oras at mga mapagkukunan na nagbibigay ng bukas na source code na ito, mangyaring suportahan ang Adafruit at open-source hardware sa pamamagitan ng pagbili

mga produkto mula sa Adafruit!

Lisensya ng MIT, suriin ang LICENSE para sa karagdagang impormasyon

Lahat ng teksto sa itaas, at ang splash screen sa ibaba ay dapat na isama sa

anumang muling pamamahagi

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

/ Ang sketch na ito ay inilaan upang magamit sa kontrol ng NeoPixel

// sa ibabaw ng BlueFuit LE Connect mobile application ng Adafruit.

/

/ - Compile at flash ang sketch na ito sa nRF52 Feather

// - Buksan ang Bluefruit LE Connect app

// - Lumipat sa NeoPixel utility

// - I-click ang pindutang 'kumonekta' upang magtaguyod ng isang koneksyon at

// ipadala ang meta-data tungkol sa layout ng pixel

// - Gamitin ang NeoPixel utility upang mai-update ang mga pixel sa iyong aparato

/ * TANDAAN: Ang sketch na ito ay kinakailangan ng hindi bababa sa bersyon 1.1.0 ng Adafruit_Neopixel !!! * /

# isama

# isama

# isama

#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"

# tukuyin ang PIN 16 / * Pin ang ginamit upang himukin ang NeoPixels * /

# tukuyin ang MAXCOMPONENTS 4

uint8_t * pixelBuffer = NULL;

uint8_t lapad = 0;

uint8_t taas = 0;

uint8_t stride;

uint8_t mga bahagiValue;

bool ay 400Hz;

uint8_t mga bahagi = 3; // 3 at 4 lamang ang may wastong halaga

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();

// BLE Serbisyo

BLEDfu bledfu;

BLEDis bledis;

BLEUart bleuart;

walang bisa ang pag-setup ()

{

Serial.begin (115200);

habang (! Serial) pagkaantala (10); // para sa nrf52840 kasama ang katutubong usb

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

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

Serial.println ();

Serial.println ("Mangyaring kumonekta gamit ang application na Bluefruit Connect LE");

// Config Neopixels

neopixel.begin ();

// Init Bluefruit

Bluefruit.begin ();

Bluefruit.setTxPower (4); // Suriin ang bluefruit.h para sa mga sinusuportahang halaga

Bluefruit.setName ("Bluefruit52");

Bluefruit. Periph.setConnectCallback (connect_callback);

// Upang maging pare-pareho ang OTA DFU dapat idagdag muna kung mayroon ito

bledfu.begin ();

// Configure and Start Device Information Service

bledis.setManufaktur ("Adafruit Industries");

bledis.setModel ("Bluefruit Feather52");

bledis.begin ();

// I-configure at simulan ang serbisyo ng BLE UART

bleuart.begin ();

// I-set up at simulan ang advertising

startAdv ();

}

void startAdv (walang bisa)

{

// Advertising packet

Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);

Bluefruit. Advertising.addTxPower ();

// Isama ang bluart ng 128-bit uuid

Bluefruit. Advertising.addService (bleuart);

// Secondary Scan Response packet (opsyonal)

// Dahil walang puwang para sa 'Pangalan' sa Advertising packet

Bluefruit. ScanResponse.addName ();

/ * Simulan ang Advertising

* - Paganahin ang auto advertising kung naka-disconnect

* - Agwat: mabilis na mode = 20 ms, mabagal na mode = 152.5 ms

* - Ang timeout para sa mabilis na mode ay 30 segundo

* - Start (timeout) na may timeout = 0 ay mag-a-advertise magpakailanman (hanggang sa konektado)

*

* Para sa inirekumendang agwat ng advertising

*

*/

Bluefruit. Advertising.restartOnDisconnect (totoo);

Bluefruit. Advertising.setInterval (32, 244); // sa yunit ng 0.625 ms

Bluefruit. Advertising.setFastTimeout (30); // bilang ng mga segundo sa mabilis na mode

Bluefruit. Advertising.start (0); // 0 = Huwag itigil ang advertising pagkatapos ng segundo

}

void connect_callback (uint16_t conn_handle)

{

// Kunin ang sanggunian sa kasalukuyang koneksyon

BLEConnection * koneksyon = Bluefruit. Connection (conn_handle);

char central_name [32] = {0};

koneksyon-> getPeerName (central_name, sizeof (central_name));

Serial.print ("Nakakonekta sa");

Serial.println (central_name);

Serial.println ("Mangyaring piliin ang tab na 'Neopixels', i-click ang 'Connect' at magsaya");

}

walang bisa loop ()

{

// Nakatanggap ng data ang echo

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

{

int command = bleuart.read ();

lumipat (utos) {

case 'V': {// Kumuha ng Bersyon

commandVersion ();

pahinga;

}

case 'S': {// Mga sukat ng pag-set up, mga bahagi, hakbang-hakbang…

commandSetup ();

pahinga;

}

case 'C': {// Malinaw na may kulay

commandClearColor ();

pahinga;

}

case 'B': {// Itakda ang Liwanag

commandSetBightness ();

pahinga;

}

case 'P': {// Itakda ang Pixel

commandSetPixel ();

pahinga;

}

case 'I': {// Tumanggap ng bagong imahe

commandImage ();

pahinga;

}

}

}

}

void swapBuffers ()

{

uint8_t * base_addr = pixelBuffer;

int pixelIndex = 0;

para sa (int j = 0; j <taas; j ++)

{

para sa (int i = 0; i <lapad; i ++) {

kung (mga sangkap == 3) {

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

}

iba pa {

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

}

base_addr + = mga bahagi;

pixelIndex ++;

}

pixelIndex + = stride - lapad; // Ilipat ang pixelIndex sa susunod na hilera (isinasaalang-alang ang hakbang)

}

neopixel.show ();

}

void commandVersion () {

Serial.println (F ("Command: Bersyon na suriin"));

sendResponse (NEOPIXEL_VERSION_STRING);

}

void commandSetup () {

Serial.println (F ("Command: Setup"));

lapad = bleuart.read ();

taas = bleuart.read ();

stride = bleuart.read ();

mga sangkapValue = bleuart.read ();

is400Hz = bleuart.read ();

neoPixelType pixelType;

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

mga sangkap = (mga sangkapValue == NEO_RGB || mga sangkapValue == NEO_RBG || mga sangkapValue == NEO_GRB || mga sangkapValue == NEO_GBR || mga sangkapValue == NEO_BRG || mga sangkapValue == NEO_BGR)? 3: 4;

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

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

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

Serial.printf ("\ tcomponents:% d / n", mga bahagi);

kung (pixelBuffer! = NULL) {

tanggalin ang pixelBuffer;

}

laki ng uint32_t = lapad * taas;

pixelBuffer = bagong uint8_t [laki * ng mga sangkap];

neopixel.updateLength (laki);

neopixel.updateType (pixelType);

neopixel.setPin (PIN);

// Tapos Na

sendResponse ("OK");

}

walang bisa ang commandSetBightness () {

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

// Basahin ang halaga

uint8_t brightness = bleuart.read ();

// Itakda ang ningning

neopixel.setBightness (ningning);

// Refresh pixel

swapBuffers ();

// Tapos Na

sendResponse ("OK");

}

walang bisa ang commandClearColor () {

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

// Basahin ang kulay

uint8_t kulay [MAXCOMPONENTS];

para sa (int j = 0; j <mga bahagi;) {

kung (bleuart.available ()) {

kulay [j] = bleuart.read ();

j ++;

}

}

// Itakda ang lahat ng mga leds sa kulay

int laki = lapad * taas;

uint8_t * base_addr = pixelBuffer;

para sa (int i = 0; i <size; i ++) {

para sa (int j = 0; j <mga bahagi; j ++) {

* base_addr = kulay [j];

base_addr ++;

}

}

// Ipagpalit ang mga buffer

Serial.println (F ("Nakumpleto ang ClearColor"));

swapBuffers ();

kung (mga sangkap == 3) {

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

}

iba pa {

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

}

// Tapos Na

sendResponse ("OK");

}

walang bisa ang commandSetPixel () {

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

// Basahin ang posisyon

uint8_t x = bleuart.read ();

uint8_t y = bleuart.read ();

// Basahin ang mga kulay

uint32_t pixelOffset = y * lapad + x;

uint32_t pixelDataOffset = pixelOffset * na mga bahagi;

uint8_t * base_addr = pixelBuffer + pixelDataOffset;

para sa (int j = 0; j <mga bahagi;) {

kung (bleuart.available ()) {

* base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

// Magtakda ng mga kulay

uint32_t neopixelIndex = y * stride + x;

uint8_t * pixelBufferPointer = pixelBuffer + pixelDataOffset;

uint32_t kulay;

kung (mga sangkap == 3) {

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

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

}

iba pa {

kulay = 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, kulay);

neopixel.show ();

// Tapos Na

sendResponse ("OK");

}

void commandImage () {

Serial.printf ("Command: Larawan% dx% d,% d,% d / n", lapad, taas, mga bahagi, hakbang);

// Tumanggap ng bagong buffer ng pixel

int laki = lapad * taas;

uint8_t * base_addr = pixelBuffer;

para sa (int i = 0; i <size; i ++) {

para sa (int j = 0; j <mga bahagi;) {

kung (bleuart.available ()) {

* base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

/*

kung (mga sangkap == 3) {

uint32_t index = i * mga bahagi;

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

}

*/

}

// Ipagpalit ang mga buffer

Serial.println (F ("Natanggap ang imahe"));

swapBuffers ();

// Tapos Na

sendResponse ("OK");

}

walang bisa ang sendResponse (char const * tugon) {

Serial.printf ("Magpadala ng Tugon:% s / n", tugon);

bleuart.write (tugon, strlen (tugon) * laki ng (char));

}

Hakbang 3: Hakbang 3: Pagbili ng Lampshade

Hakbang 3: Pagbili ng Lampshade
Hakbang 3: Pagbili ng Lampshade
Hakbang 3: Pagbili ng Lampshade
Hakbang 3: Pagbili ng Lampshade

Hakbang 4: Hakbang4: Hilahin Lahat Ito

Inirerekumendang: