Orodha ya maudhui:

Changamoto Kweli: Hatua 5
Changamoto Kweli: Hatua 5

Video: Changamoto Kweli: Hatua 5

Video: Changamoto Kweli: Hatua 5
Video: HATUA 5 ZA KUBADILI CHANGAMOTO KUWA FEDHA - Victor Mwambene. 2024, Julai
Anonim
Image
Image
Hatua ya 1: Solder Mzunguko
Hatua ya 1: Solder Mzunguko

Ulimwengu wa kisasa unahitaji wanadamu kutoka nje ya mwili na kuishi ndani ya dijiti.

Pamoja na kuonekana kwa Al na kuenea kwa teknolojia watu huamini sana mashine na wanaamini kuwa sahihi kila wakati.

"Kweli" inakusudiwa kutikisa uaminifu huu wa uwongo kupitia uundaji wa jaribio bandia la upelelezi wa uwongo. Watu wataamini kwa urahisi kuwa Kweli inafanya kazi lakini majibu ya uwongo yatakapotolewa itatikisa imani yao kipofu katika teknolojia.

Hatua ya 1: Hatua ya 1: Solder the Circuit

Kwa sababu kazi zangu zina nuru moja tu, kwa hivyo ni rahisi sana kutengeneza. Shida kuu ni mwanzoni, niliuza taa mbili, lakini sikufunika sehemu ya mfiduo mara moja. Kwa hivyo wakati waya mbili zinapogusana. Ni fupi.

Hatua ya 2: Hatua ya 2: Andika Nambari

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; urefu wa mstari: 15.0px; font: Nyakati 12.0px; rangi: # 000000; rangi ya asili: #ffffff}

p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; urefu wa mstari: 15.0px; font: Nyakati 12.0px; rangi: # 000000; rangi ya asili: #ffffff; urefu wa dakika: 14.0px} span.s1 {font-kerning: none}

Hatua ya 2: Andika Nambari

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

Huu ni mfano kwa moduli zetu za nRF52 za Bluefruit LE

Chagua moja leo katika duka la matunda!

Adafruit huwekeza muda na rasilimali kutoa nambari hii wazi ya chanzo, tafadhali saidia Adafruit na vifaa vyenye chanzo kwa kununua

bidhaa kutoka Adafruit!

Leseni ya MIT, angalia LESENI kwa habari zaidi

Maandishi yote hapo juu, na skrini ya mwangaza hapa chini lazima ijumuishwe katika

ugawaji wowote

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

/ Mchoro huu unakusudiwa kutumiwa na udhibiti wa NeoPixel

// uso katika programu ya simu ya Adafruit Bluefruit LE Connect.

/

/ - Kusanya na uangaze mchoro huu kwa Manyoya ya nRF52

// - Fungua programu ya Bluefruit LE Connect

// - Badilisha kwa matumizi ya NeoPixel

// - Bonyeza kitufe cha 'unganisha' ili kuanzisha unganisho na

// tuma meta-data kuhusu mpangilio wa pikseli

// - Tumia huduma ya NeoPixel kusasisha saizi kwenye kifaa chako

/ * KUMBUKA: Mchoro huu ulihitaji angalau toleo 1.1.0 la Adafruit_Neopixel !!! * /

# pamoja

# pamoja

# pamoja

#fafanua NEOPIXEL_VERSION_STRING "Neopixel v2.0"

#fafanua PIN 16 / * Pini inayotumika kuendesha NeoPixels * /

#fafanua MAXCOMPONENTS 4

uint8_t * pixelBuffer = NULL;

uint8_t upana = 0;

uint8_t urefu = 0;

uint8_t hatua;

Vipengee vya uint8_thamini;

bool is400Hz;

vifaa vya uint8_t = 3; // 3 na 4 tu ni maadili halali

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();

// Huduma ya BLE

BLEDfu bledfu;

Bledis bledis;

BLEUart bleuart;

kuanzisha batili ()

{

Serial. Kuanza (115200);

wakati (! Serial) kuchelewa (10); // kwa nrf52840 na usb asili

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

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

Serial.println ();

Serial.println ("Tafadhali unganisha kwa kutumia programu ya Bluefruit Connect LE");

// Sanidi Neopixels

neopixel.anza ();

// Init Bluefruit

Bluefruit. Kuanza ();

Bluefruit.setTxPower (4); // Angalia matunda ya bluu.h kwa maadili yanayoungwa mkono

Bluefruit.setName ("Bluefruit52");

Bluefruit. Periph.setConnectCallback (unganisha_callback);

// Kuwa sawa OTA DFU inapaswa kuongezwa kwanza ikiwa ipo

kuanza ();

// Sanidi na Anzisha Huduma ya Habari ya Kifaa

mtengenezaji wa bledis.set ("Viwanda vya Adafruit");

bledis.setModel ("Manyoya ya Bluefruit52");

bledis kuanza ();

// Sanidi na anza huduma ya BLE UART

kuanza ();

// Weka na uanze kutangaza

AnzaAdv ();

}

kuanza batili (bure)

{

// Pakiti ya Matangazo

Matunda ya Bluefruit. Matangazo. OngezaFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);

Matunda ya Bluefruit. Tangaza.addTxPower ();

// Jumuisha uuid ya biti 128

Matunda ya Bluefruit. Matangazo. AddService (bleuart);

// pakiti ya majibu ya skanari ya sekondari (hiari)

// Kwa kuwa hakuna nafasi ya 'Jina' katika pakiti ya Matangazo

Bluefruit. ScanResponse.addName ();

/ * Anza Kutangaza

* - Wezesha matangazo ya kiotomatiki ikiwa imetenganishwa

* - Muda: hali ya haraka = 20 ms, mode polepole = 152.5 ms

* - Kuisha kwa hali ya haraka ni sekunde 30

* - Anza (muda umekwisha) na muda wa kuisha = 0 utatangaza milele (hadi unganishwe)

*

* Kwa muda uliopendekezwa wa matangazo

*

*/

Matunda ya Bluefruit. Matangazo. Anzisha Kuondoa (kweli);

Bluefruit. Matangazo.setInterval (32, 244); // katika kitengo cha 0.625 ms

Matunda ya Bluefruit. Matangazo.setFestTimeout (30); // idadi ya sekunde katika hali ya haraka

Bluefruit. Kuanzisha.kuanzisha (0); // 0 = Usiache kutangaza baada ya sekunde n

}

batili connect_callback (uint16_t conn_handle)

{

// Pata kumbukumbu ya unganisho la sasa

Uunganisho wa BLE * unganisho = Bluefruit. Connection (conn_handle);

char central_name [32] = {0};

unganisho-> GetPeerName (jina la kati, saizi ya (jina_lo kuu));

Serial.print ("Imeunganishwa na");

Serial.println (jina la kati);

Serial.println ("Tafadhali chagua kichupo cha 'Neopixels', bonyeza 'Unganisha' na ufurahie");

}

kitanzi batili ()

{

// Echo ilipokea data

ikiwa (Bluefruit. imeunganishwa () && bleuart.notifyEnabled ())

{

amri ya int = bleuart.read ();

badilisha (amri) {

kesi 'V': {// Pata Toleo

amriVersion ();

kuvunja;

}

kesi 'S': {// Vipimo vya usanidi, vifaa, hatua…

amriSetup ();

kuvunja;

}

kesi 'C': {// Safi na rangi

amriClearColor ();

kuvunja;

}

kesi 'B': {// Weka Mwangaza

amriSetBrightness ();

kuvunja;

}

kesi 'P': {// Weka Pixel

amriSetPixel ();

kuvunja;

}

kesi 'I': {// Pokea picha mpya

amriImage ();

kuvunja;

}

}

}

}

ubadilishaji batiliBuffers ()

{

uint8_t * base_addr = pixelBuffer;

pixelIndex = 0;

kwa (int j = 0; j <urefu; j ++)

{

kwa (int i = 0; i <upana; i ++) {

ikiwa (vipengele == 3) {

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

}

mwingine {

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

}

msingi_addr + = vifaa;

pixelIndex ++;

}

pixelIndex + = stride - upana; // Sogeza pixelIndex kwenye safu inayofuata (kuzingatia hatua)

}

neopixel.show ();

}

utupu amriVersion () {

Serial.println (F ("Amri: Tazama toleo"));

tumaJibu (NEOPIXEL_VERSION_STRING);

}

amri batiliSetup () {

Serial.println (F ("Amri: Sanidi"));

upana = bleuart.read ();

urefu = bleuart.read ();

stride = bleuart.read ();

vipengeleValue = bleuart.read ();

is400Hz = bleuart. soma ();

Aina ya pikseli ya neoPixel;

pixelType = vipengeleV Thamani + (is400Hz? NEO_KHZ400: NEO_KHZ800);

vipengele = (vipengeleValue == NEO_RGB || vipengeleValue == NEO_RBG || vipengeleValue == NEO_GRB || vipengeleValue == NEO_GBR || vipengeleValue == NEO_BRG || vipengeleValue == NEO_BGR)? 3: 4;

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

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

Serial.printf ("\ tpixelType% d / n", aina ya pixel);

Serial.printf ("\ vijenzi:% d / n", vifaa);

ikiwa (pixelBuffer! = NULL) {

kufuta pixelBuffer;

}

uint32_t size = upana * urefu;

pixelBuffer = mpya uint8_t [vifaa vya ukubwa];

neopixel.updateLength (saizi);

aina ya neopixel.updateType (pixelType);

neopixel.setPin (PIN);

// Imefanywa

sendResponse ("Sawa");

}

batili amriSetBrightness () {

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

// Thamani ya kusoma

uint8_t mwangaza = bleuart.read ();

// Weka mwangaza

neopixel.setBrightness (mwangaza);

// Burudisha saizi

wabadilishaneBuffers ();

// Imefanywa

sendResponse ("Sawa");

}

batili commandClearColor () {

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

// Soma rangi

rangi ya uint8_ [MAXCOMPONENTS];

kwa (int j = 0; j <vipengele;) {

ikiwa (bleuart haipatikani ()) {

rangi [j] = bleuart.read ();

j ++;

}

}

// Weka rangi zote

ukubwa wa int = upana * urefu;

uint8_t * base_addr = pixelBuffer;

kwa (int i = 0; i <size; i ++) {

kwa (int j = 0; j <vipengele; j ++) {

* base_addr = rangi [j];

msingi_addr ++;

}

}

// Kubadilisha bafa

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

wabadilishaneBuffers ();

ikiwa (vipengele == 3) {

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

}

mwingine {

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

}

// Imefanywa

sendResponse ("Sawa");

}

batili commandSetPixel () {

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

// Soma msimamo

uint8_t x = bleuart.read ();

uint8_t y = bleuart.read ();

// Soma rangi

uint32_t pixelOffset = y * upana + x;

uint32_t pixelDataOffset = vipengele vya pixelOffset *;

uint8_t * base_addr = pixelBuffer + pixelDataOffset;

kwa (int j = 0; j <vipengele;) {

ikiwa (bleuart haipatikani ()) {

* msingi_addr = bleuart.read ();

msingi_addr ++;

j ++;

}

}

// Weka rangi

uint32_t neopixelIndex = y * stride + x;

uint8_t * pixelBufferPointer = pixelBuffer + pixelDataOffset;

rangi ya uint32_t;

ikiwa (vipengele == 3) {

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

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

}

mwingine {

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

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

}

neopixel.setPixelColor (neopixelIndex, rangi);

neopixel.show ();

// Imefanywa

sendResponse ("Sawa");

}

batili amriImage () {

Serial.printf ("Amri: Picha% dx% d,% d,% d / n", upana, urefu, vifaa, hatua);

// Pokea bafa mpya ya pikseli

ukubwa wa int = upana * urefu;

uint8_t * base_addr = pixelBuffer;

kwa (int i = 0; i <size; i ++) {

kwa (int j = 0; j <vipengele;) {

ikiwa (bleuart haipatikani ()) {

* msingi_addr = bleuart.read ();

msingi_addr ++;

j ++;

}

}

/*

ikiwa (vipengele == 3) {

uint32_t index = i * vifaa;

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

}

*/

}

// Kubadilisha bafa

Serial.println (F ("Picha imepokea"));

wabadilishaneBuffers ();

// Imefanywa

sendResponse ("Sawa");

}

batili sendResponse (jibu const * majibu) {

Serial.printf ("Tuma Jibu:% s / n", majibu);

andika (jibu, strlen (majibu) * sizeof (char));

}

Hatua ya 3: Hatua ya 3: Kununua Lampshade

Hatua ya 3: Kununua Lampshade
Hatua ya 3: Kununua Lampshade
Hatua ya 3: Kununua Lampshade
Hatua ya 3: Kununua Lampshade

Hatua ya 4: Hatua ya 4: Vuta Yote Pamoja

Ilipendekeza: