Мазмұны:

Нағыз сынақ: 5 қадам
Нағыз сынақ: 5 қадам

Бейне: Нағыз сынақ: 5 қадам

Бейне: Нағыз сынақ: 5 қадам
Бейне: Өлді деп жерлемек болған еді. Бірақ Алланың қалауымен тірілген Бала 2024, Қараша
Anonim
Image
Image
1 -қадам: тізбекті дәнекерлеңіз
1 -қадам: тізбекті дәнекерлеңіз

Қазіргі әлем адамдардан физикалық өмірден кетуді және сандық жүйеде өмір сүруді талап етеді.

Al -дің пайда болуымен және технологияның таралуымен адамдар машинаға тым көп сенеді және оны әрқашан дұрыс деп санайды.

«Шынында» жалған детекторлық тест құру арқылы бұл жалған сенімді жоюға арналған. Адамдар шынымен де жұмыс істейтініне оңай сенеді, бірақ егер жалған жауаптар берілсе, бұл олардың технологияға деген сенімін жоғалтады.

1 -қадам: 1 -қадам: Схеманы дәнекерлеу

Өйткені менің туындыларымда тек бір ғана жарық бар, сондықтан оны дәнекерлеу өте оңай. Негізгі мәселе - басында, мен екі жарықты дәнекерлеймін, бірақ мен экспозиция бөлігін бірден жаппадым. Осылайша, екі сым бір -біріне тиіп тұрғанда. Қысқа.

2 -қадам: 2 -қадам: Кодты жазыңыз

p.p1 {маржа: 0.0px 0.0px 0.0px 0.0px; сызық биіктігі: 15,0 пиксель; қаріп: 12.0px Times; түсі: #000000; өң түсі: #ffffff}

p.p2 {маржа: 0.0px 0.0px 0.0px 0.0px; сызық биіктігі: 15,0 пиксель; қаріп: 12.0px Times; түсі: #000000; өң түсі: #ffffff; мин биіктігі: 14.0px} span.s1 {қаріп-кернинг: жоқ}

2 -қадам: кодты жазыңыз

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

Бұл біздің nRF52 негізіндегі Bluefruit LE модульдерінің үлгісі

Адафрут дүкенінен бүгін біреуін алыңыз!

Adafruit осы ашық бастапқы кодты қамтамасыз ететін уақыт пен ресурстарды инвестициялайды, сатып алу арқылы Adafruit пен ашық коды бар жабдықты қолдаңыз

Adafruit өнімдері!

MIT лицензиясы, қосымша ақпарат алу үшін LICENSE тексеріңіз

Жоғарыдағы барлық мәтінді және төмендегі экранды енгізу керек

кез келген қайта бөлу

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

/ Бұл эскиз NeoPixel басқаруымен қолдануға арналған

// беті Adafruit's Bluefruit LE Connect мобильді қосымшасында.

/

/ - Бұл эскизді nRF52 қауырсынға құрастырып, жыпылықтаңыз

// - Bluefruit LE Connect қосымшасын ашыңыз

// - NeoPixel утилитасына ауысыңыз

// - Байланыс орнату үшін 'қосылу' түймесін басыңыз

// пиксель орналасуы туралы мета-деректерді жіберу

// - құрылғыдағы пикселдерді жаңарту үшін NeoPixel утилитасын пайдаланыңыз

/* ЕСКЕРТУ: Бұл эскизге Adafruit_Neopixel 1.1.0 нұсқасы қажет болды !!! */

#қосу

#қосу

#қосу

#depine NEOPIXEL_VERSION_STRING «Neopixel v2.0»

#define PIN 16 / * NeoPixels жүргізуге арналған түйреуіш * /

#MAXCOMPONENTS анықтаңыз 4

uint8_t *pixelBuffer = NULL;

uint8_t ені = 0;

uint8_t биіктігі = 0;

uint8_t қадам;

uint8_t компоненттерінің мәні;

бол - 400 Гц;

uint8_t компоненттері = 3; // тек 3 және 4 - жарамды мәндер

Adafruit_NeoPixel неопикселі = Adafruit_NeoPixel ();

// BLE қызметі

BLEDfu bledfu;

BLEDis bledis;

BLEUart bleuart;

жарамсыз орнату ()

{

Serial.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. Advertising.addService (bleuart);

// Екінші сканерлеу жауап пакеті (міндетті емес)

// Жарнама пакетінде 'Name' үшін орын жоқ болғандықтан

Bluefruit. ScanResponse.addName ();

/* Жарнаманы бастаңыз

* - Ажыратылған жағдайда автоматты жарнаманы қосыңыз

* - Аралық: жылдам режим = 20 мс, баяу режим = 152,5 мс

* - Жылдам режимнің күту уақыты - 30 секунд

* - Тайм -аутпен = 0 басталу (күту уақыты) мәңгі жарнамаланады (қосылғанға дейін)

*

* Ұсынылатын жарнама аралығы үшін

*

*/

Bluefruit. Advertising.restartOnDisconnect (шын);

Bluefruit. Advertising.setInterval (32, 244); // 0,625 мс бірлікпен

Bluefruit. Advertising.setFastTimeout (30); // жылдам режимдегі секундтар саны

Bluefruit. Advertising.start (0); // 0 = Жарнаманы n секундтан кейін тоқтатпаңыз

}

void 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 («» Неопиксельдер «қойындысын таңдаңыз,» Қосылу «түймесін басып, көңіл көтеріңіз»);

}

бос цикл ()

{

// Деректер жаңғырығы

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

{

int пәрмені = bleuart.read ();

ауысу (команда) {

case 'V': {// Нұсқасын алу

commandVersion ();

үзіліс;

}

case 'S': {// Орнату өлшемдері, компоненттері, қадамы…

commandSetup ();

үзіліс;

}

корпус 'С': {// Түспен тазалау

commandClearColor ();

үзіліс;

}

'B' жағдайы: {// Жарықтықты орнатыңыз

commandSetBrightness ();

үзіліс;

}

'P' жағдайы: {// Pixel орнату

commandSetPixel ();

үзіліс;

}

case 'I': {// Жаңа кескін алу

commandImage ();

үзіліс;

}

}

}

}

void swapBuffers ()

{

uint8_t *base_addr = pixelBuffer;

int pixelIndex = 0;

үшін (int j = 0; j <биіктік; j ++)

{

үшін (int i = 0; i <ені; i ++) {

if (компоненттер == 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 («Пәрмен: нұсқаны тексеру»)));

sendResponse (NEOPIXEL_VERSION_STRING);

}

void commandSetup () {

Serial.println (F («Пәрмен: Орнату»));

ені = bleuart.read ();

биіктік = bleuart.read ();

stride = bleuart.read ();

componentValue = bleuart.read ();

is400Hz = bleuart.read ();

neoPixelType pixelType;

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

komponent = 3: 4;

Serial.printf («\ tsize: %dx %d / n», ені, биіктігі);

Serial.printf («\ tstride: %d / n», қадам);

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

Serial.printf («\ t компоненттері: %d / n», компоненттер);

егер (pixelBuffer! = NULL) {

жою pixelBuffer;

}

uint32_t өлшемі = ені*биіктігі;

pixelBuffer = жаңа uint8_t [size*компоненттері];

neopixel.updateLength (өлшем);

neopixel.updateType (pixelType);

neopixel.setPin (PIN);

// Орындалды

sendResponse («Жарайды»);

}

void commandSetBrightness () {

Serial.println (F («Command: SetBrightness»)));

// Мәнді оқу

uint8_t жарықтығы = bleuart.read ();

// Жарықтықты орнатыңыз

neopixel.setBrightness (жарықтық);

// пикселдерді жаңарту

swapBuffers ();

// Орындалды

sendResponse («Жарайды»);

}

void commandClearColor () {

Serial.println (F («Command: ClearColor»));

// Түсті оқу

uint8_t түсі [MAXCOMPONENTS];

for (int j = 0; j <компоненттер;) {

if (bleuart.available ()) {

түс [j] = bleuart.read ();

j ++;

}

}

// Барлық жарықдиодты түске орнатыңыз

int өлшемі = ені * биіктігі;

uint8_t *base_addr = pixelBuffer;

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

үшін (int j = 0; j <компоненттер; j ++) {

*base_addr = түс [j];

base_addr ++;

}

}

// Буферлерді ауыстыру

Serial.println (F («ClearColor аяқталды»));

swapBuffers ();

if (компоненттер == 3) {

Serial.printf («\ tclear (%d, %d, %d) n», түс [0], түс [1], түс [2]);

}

басқа {

Serial.printf («\ tclear (%d, %d, %d, %d) n», түс [0], түс [1], түс [2], түс [3]);

}

// Орындалды

sendResponse («Жарайды»);

}

жарамсыз commandSetPixel () {

Serial.println (F («Команда: 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 түсі;

if (компоненттер == 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 («Жарайды»);

}

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 ++;

}

}

/*

if (компоненттер == 3) {

uint32_t индексі = i*компоненттері;

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

}

*/

}

// Буферлерді ауыстыру

Serial.println (F («Кескін алынды»));

swapBuffers ();

// Орындалды

sendResponse («Жарайды»);

}

жарамсыз sendResponse (char const *жауап) {

Serial.printf («Жауап жіберу: %s / n», жауап);

bleuart.write (жауап, strlen (жауап)*sizeof (char));

}

3 -қадам: 3 -қадам: Абажур сатып алу

3 -қадам: абажур сатып алу
3 -қадам: абажур сатып алу
3 -қадам: абажур сатып алу
3 -қадам: абажур сатып алу

4 -қадам: 4 -қадам: Барлығын бірге тартыңыз

Ұсынылған: