Агуулгын хүснэгт:

Үнэхээр сорилт: 5 алхам
Үнэхээр сорилт: 5 алхам

Видео: Үнэхээр сорилт: 5 алхам

Видео: Үнэхээр сорилт: 5 алхам
Видео: Аль-Фатиха #ислам #альфатиха #коран #суры #сурымолитвы #аятыкорана 2024, Долдугаар сарын
Anonim
Image
Image
Алхам 1: Цахилгаан хэлхээг гагнах
Алхам 1: Цахилгаан хэлхээг гагнах

Орчин үеийн ертөнц нь хүмүүс бие махбодоосоо гарч дижитал орчинд амьдрахыг шаарддаг.

Аль гарч ирж, технологи хөгжихийн хэрээр хүмүүс машинд хэт их итгэж, үүнийг үргэлж зөв гэж итгэдэг.

"Үнэхээр" нь хуурамч худал илрүүлэгч тестийг бий болгох замаар энэхүү хуурамч итгэлийг үгүй хийх зорилготой юм. Хүмүүс үнэхээр үнэхээр ажиллаж байгаа гэдэгт амархан итгэх болно, гэхдээ хуурамч хариулт өгөх нь тэдний технологид итгэх итгэлийг үгүй хийх болно.

Алхам 1: Алхам 1: Цахилгаан хэлхээг гагнах

Учир нь миний бүтээлүүд ганцхан гэрэлтэй тул гагнахад маш хялбар байдаг. Гол асуудал бол эхэндээ би хоёр гэрлийг гагнаж байсан боловч өртөх хэсгийг тэр дор нь хамруулаагүй. Тиймээс хоёр утас салах үед хоорондоо холбоо барина. Богино байна.

Алхам 2: Алхам 2: Кодыг бичнэ үү

p.p1 {зах: 0.0px 0.0px 0.0px 0.0px; шугамын өндөр: 15.0 пиксел; фонт: 12.0px удаа; өнгө: #000000; дэвсгэр өнгө: #ffffff}

p.p2 {зах: 0.0px 0.0px 0.0px 0.0px; шугамын өндөр: 15.0 пиксел; фонт: 12.0px удаа; өнгө: #000000; дэвсгэр өнгө: #ffffff; мин өндөр: 14.0px} span.s1 {фонт-кернинг: байхгүй}

Алхам 2: Кодыг бичнэ үү

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

Энэ бол манай nRF52 дээр суурилсан Bluefruit LE модулиудын жишээ юм

Өнөөдөр adafruit дэлгүүрээс нэгийг аваарай!

Adafruit нь энэхүү нээлттэй эх кодыг өгөхөд цаг хугацаа, нөөцөө зориулдаг.

Adafruit болон нээлттэй эхийн тоног төхөөрөмжийг худалдан авах замаар дэмжээрэй

Adafruit -ийн бүтээгдэхүүнүүд!

MIT лиценз, дэлгэрэнгүй мэдээллийг LICENSE -ээс шалгана уу

Дээрх бүх текст болон доорх дэлгэцийг оруулах ёстой

аливаа дахин хуваарилалт

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

/ Энэхүү ноорог зургийг NeoPixel удирдлагад ашиглах зориулалттай

// Adafruit -ийн Bluefruit LE Connect мобайл аппликейшн дээрх гадаргуу.

/

/ - Энэхүү эскизийг эмхэтгэн nRF52 өд рүү оруулна уу

// - Bluefruit LE Connect програмыг нээнэ үү

// - NeoPixel хэрэгсэлд шилжих

// - 'connect' товчийг дарж холболт үүсгэнэ

// пикселийн байршлын талаархи мета өгөгдлийг илгээх

// - NeoPixel хэрэгслийг ашиглан төхөөрөмж дээрх пикселүүдийг шинэчилнэ үү

/* ТАЙЛБАР: Энэхүү ноорог нь хамгийн багадаа Adafruit_Neopixel -ийн 1.1.0 хувилбарыг шаарддаг байсан !!! */

#оруулах

#оруулах

#оруулах

NEOPIXEL_VERSION_STRING "Neopixel v2.0" -ийг #тодорхойлох

#тодорхойлох PIN 16 / * NeoPixels -ийг жолоодоход ашигладаг зүү * /

#MAXCOMPONENTS -ийг тодорхойлох 4

uint8_t *pixelBuffer = NULL;

uint8_t өргөн = 0;

uint8_t өндөр = 0;

uint8_t алхам хийх;

uint8_t бүрэлдэхүүн хэсэгValue;

bool нь 400 Гц;

uint8_t бүрэлдэхүүн хэсгүүд = 3; // зөвхөн 3 ба 4 нь хүчин төгөлдөр утга юм

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();

// BLE үйлчилгээ

BLEDfu bledfu;

BLEDis bledis;

BLEUart bleuart;

хүчингүй тохиргоо ()

{

Цуваа.begin (115200);

while (! Цуваа) саатал (10); // уугуул usb бүхий nrf52840 -ийн хувьд

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

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

Serial.println ();

Serial.println ("Bluefruit Connect LE програмыг ашиглан холбогдоно уу");

// Неопикселийг тохируулах

neopixel.begin ();

// Init Bluefruit

Bluefruit.begin ();

Bluefruit.setTxPower (4); // Дэмжигдсэн утгуудын хувьд bluefruit.h -ийг шалгана уу

Bluefruit.setName ("Bluefruit52");

Bluefruit. Periph.setConnectCallback (connect_callback);

// Тогтвортой байхын тулд OTA DFU байгаа бол эхлээд нэмж оруулах ёстой

bledfu.begin ();

// Төхөөрөмжийн мэдээллийн үйлчилгээг тохируулах, эхлүүлэх

bledis.setMan Manufacturer ("Adafruit Industries");

bledis.setModel ("Bluefruit Feather52");

bledis.begin ();

// BLE UART үйлчилгээг тохируулж эхлүүлнэ үү

bleuart.begin ();

// Зар сурталчилгаа тохируулж, эхлүүлнэ үү

startAdv ();

}

void startAdv (хүчингүй)

{

// Зар сурталчилгааны багц

Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);

Bluefruit. Advertising.addTxPower ();

// bleuart 128 битийн uuid оруулах

Bluefruit. Reklam.addService (bleuart);

// Хоёрдогч скан хариулах багц (заавал биш)

// Зар сурталчилгааны багцад 'Нэр' оруулах зай байхгүй тул

Bluefruit. ScanResponse.addName ();

/* Зар сурталчилгаа эхлүүлэх

* - Хэрэв салгагдсан бол авто зар сурталчилгааг идэвхжүүлнэ үү

* - Интервал: хурдан горим = 20 ms, удаан горим = 152.5 ms

* - Хурдан горимын хугацаа 30 секунд байна

* - Завсарлагаанаар эхлэх цаг (0) нь үүрд сурталчлах болно (холбогдох хүртэл)

*

* Зөвлөмж болгож буй зар сурталчилгааны интервалын хувьд

*

*/

Bluefruit. Reklam.restartOnDisconnect (үнэн);

Bluefruit. Reklam.setInterval (32, 244); // 0.625 мс -ийн нэгжээр

Bluefruit. Reklam.setFastTimeout (30); // хурдан горим дахь секундын тоо

Bluefruit. Advertising.start (0); // 0 = n секундын дараа сурталчилгаагаа бүү зогсоо

}

хүчингүй connect_callback (uint16_t conn_handle)

{

// Одоогийн холболтын лавлагаа авах

BLEConnection* холболт = Bluefruit. Connection (conn_handle);

char central_name [32] = {0};

холболт-> getPeerName (төвийн_ нэр, хэмжээ (төвийн_ нэр));

Serial.print ("Холбогдсон");

Serial.println (central_name);

Serial.println ( 'Neopixels' табыг сонгоод 'Connect' дээр дараад хөгжилтэй байгаарай);

}

хоосон давталт ()

{

// Цуурай мэдээлэл хүлээн авлаа

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

{

int тушаал = bleuart.read ();

солих (тушаал) {

case 'V': {// Хувилбар авах

commandVersion ();

завсарлага;

}

case 'S': {// Хэмжээ, бүрэлдэхүүн хэсэг, алхамыг тохируулах …

commandSetup ();

завсарлага;

}

кейс 'С': {// Өнгөөр цэвэрлэ

commandClearColor ();

завсарлага;

}

тохиолдол 'B': {// Brightness -ийг тохируулна уу

commandSetBrightness ();

завсарлага;

}

тохиолдолд 'P': {// Pixel тохируулна уу

commandSetPixel ();

завсарлага;

}

case 'I': {// Шинэ зураг авах

commandImage ();

завсарлага;

}

}

}

}

void swapBuffers ()

{

uint8_t *base_addr = pixelBuffer;

int pixelIndex = 0;

for (int j = 0; j <өндөр; j ++)

{

for (int i = 0; i <өргөн; i ++) {

хэрэв (бүрэлдэхүүн хэсэг == 3) {

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

}

өөр {

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

}

base_addr+= бүрэлдэхүүн хэсгүүд;

pixelIndex ++;

}

pixelIndex += алхам - өргөн; // PixelIndex -ийг дараагийн эгнээнд шилжүүлэх (алхамыг харгалзан үзнэ үү)

}

neopixel.show ();

}

void commandVersion () {

Serial.println (F ("Command: Version check"));

sendResponse (NEOPIXEL_VERSION_STRING);

}

void commandSetup () {

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

өргөн = bleuart.read ();

өндөр = bleuart.read ();

алхам = bleuart.read ();

бүрэлдэхүүн хэсэгValue = bleuart.read ();

is400Hz = bleuart.read ();

neoPixelType pixelType;

pixelType = бүрэлдэхүүн хэсэгValue + (is400Hz? NEO_KHZ400: NEO_KHZ800);

бүрэлдэхүүн хэсэг = (componentValue == NEO_RGB || бүрэлдэхүүн хэсэгValue == NEO_RBG || бүрэлдэхүүн хэсгүүдValue == NEO_GRB || бүрэлдэхүүн хэсэгүүд 3: 4;

Serial.printf ("\ tsize: %dx %d / n", өргөн, өндөр);

Serial.printf ("\ tstride: %d / n", алхам);

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

Serial.printf ("\ tcomponents: %d / n", бүрэлдэхүүн хэсгүүд);

if (pixelBuffer! = NULL) {

устгах pixelBuffer;

}

uint32_t хэмжээ = өргөн*өндөр;

pixelBuffer = шинэ uint8_t [size*бүрэлдэхүүн хэсэг];

neopixel.updateLength (хэмжээ);

neopixel.updateType (pixelType);

neopixel.setPin (PIN);

// Дууссан

sendResponse ("OK");

}

void commandSetBrightness () {

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

// Унших утга

uint8_t тод байдал = bleuart.read ();

// Гэрэлтүүлгийг тохируулна уу

neopixel.setBrightness (тод байдал);

// Пикселийг шинэчлэх

swapBuffers ();

// Дууссан

sendResponse ("OK");

}

void commandClearColor () {

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

// Өнгө уншина уу

uint8_t өнгө [MAXCOMPONENTS];

for (int j = 0; j <бүрэлдэхүүн хэсэг;) {

if (bleuart.available ()) {

өнгө [j] = bleuart.read ();

j ++;

}

}

// Бүх LED -ийг өнгө болгон тохируулна уу

int хэмжээ = өргөн * өндөр;

uint8_t *base_addr = pixelBuffer;

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

for (int j = 0; j <бүрэлдэхүүн; j ++) {

*base_addr = өнгө [j];

base_addr ++;

}

}

// Буферийг солих

Serial.println (F ("ClearColor дууссан"));

swapBuffers ();

хэрэв (бүрэлдэхүүн хэсэг == 3) {

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

}

өөр {

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

}

// Дууссан

sendResponse ("OK");

}

хүчингүй командSetPixel () {

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

// Албан тушаалыг уншина уу

uint8_t x = bleuart.read ();

uint8_t y = bleuart.read ();

// Өнгийг уншина уу

uint32_t pixelOffset = y*өргөн+x;

uint32_t pixelDataOffset = pixelOffset*бүрэлдэхүүн хэсгүүд;

uint8_t *base_addr = pixelBuffer+pixelDataOffset;

for (int j = 0; j <бүрэлдэхүүн хэсэг;) {

if (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

// Өнгийг тохируулах

uint32_t neopixelIndex = y*алхам+x;

uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;

uint32_t өнгө;

хэрэв (бүрэлдэхүүн хэсэг == 3) {

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

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

}

өөр {

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, өнгө);

neopixel.show ();

// Дууссан

sendResponse ("OK");

}

void commandImage () {

Serial.printf ("Тушаал: Зураг %dx %d, %d, %d / n", өргөн, өндөр, бүрэлдэхүүн хэсэг, алхам);

// Шинэ пиксел буфер хүлээн авах

int хэмжээ = өргөн * өндөр;

uint8_t *base_addr = pixelBuffer;

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

for (int j = 0; j <бүрэлдэхүүн хэсэг;) {

if (bleuart.available ()) {

*base_addr = bleuart.read ();

base_addr ++;

j ++;

}

}

/*

хэрэв (бүрэлдэхүүн хэсэг == 3) {

uint32_t index = i*бүрэлдэхүүн хэсгүүд;

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

}

*/

}

// Буферийг солих

Serial.println (F ("Зураг хүлээн авсан"));

swapBuffers ();

// Дууссан

sendResponse ("OK");

}

хүчингүй sendResponse (char const *хариулт) {

Serial.printf ("Хариу илгээх: %s / n", хариу);

bleuart.write (хариу, strlen (хариу)*sizeof (char));

}

Алхам 3: Алхам 3: Гэрлийн шил худалдаж авах

Алхам 3: Гэрлийн шил худалдаж авах
Алхам 3: Гэрлийн шил худалдаж авах
Алхам 3: Гэрлийн шил худалдаж авах
Алхам 3: Гэрлийн шил худалдаж авах

Алхам 4: Алхам 4: Бүгдийг хамтад нь татах

Зөвлөмж болгож буй: