Obsah:
- Krok 1: Krok 1: Spájkujte obvod
- Krok 2: Krok 2: Napíšte kód
- Krok 3: Krok 3: Nákup tienidla
- Krok 4: Krok 4: Spojte všetko dohromady
- Krok 5: Krok 5: Výroba hracích kariet
Video: Naozaj výzva: 5 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
Moderný svet vyžaduje, aby ľudia vystúpili z fyzického a žili v digitálnom svete.
Vzhľadom na výskyt Al a šírenie technológie ľudia príliš dôverujú stroju a veria, že je vždy správny.
Cieľom „Naozaj“je otriasť touto falošnou dôverou vytvorením testu falošného detektora lži. Ľudia ľahko uveria, že Really funguje, ale keď poskytnete nepravdivé odpovede, otrasie to ich slepou dôverou v technológie.
Krok 1: Krok 1: Spájkujte obvod
Pretože moje diela majú iba jedno svetlo, je veľmi ľahké ho spájkovať. Hlavný problém je na začiatku, spájkujem dve svetlá, ale expozičnú časť som hneď nezakryl. Keď sa teda časť dvoch drôtov dotýka. Skratuje sa.
Krok 2: Krok 2: Napíšte kód
p.p1 {margin: 0,0px 0,0px 0,0px 0,0px; výška riadka: 15,0 pixelov; písmo: 12,0px Times; farba: #000000; farba pozadia: #ffffff}
p.p2 {margin: 0,0px 0,0px 0,0px 0,0px; výška riadka: 15,0 pixelov; písmo: 12,0px Times; farba: #000000; farba pozadia: #ffffff; min-height: 14.0px} span.s1 {font-kerning: none}
Krok 2: Napíšte kód
/*********************************************************************
Toto je príklad pre naše moduly Bluefruit LE založené na nRF52
Vyberte si jeden dnes v obchode s adafruitmi!
Adafruit investuje čas a zdroje tým, že poskytuje tento otvorený zdrojový kód, podporte prosím Adafruit a hardvér s otvoreným zdrojovým kódom kúpou
produkty od spoločnosti Adafruit!
Licencia MIT, ďalšie informácie nájdete v LICENCII
Musí byť zahrnutý všetok text vyššie a úvodná obrazovka nižšie
akékoľvek prerozdelenie
*********************************************************************
/ Táto skica je určená na použitie s ovládacím prvkom NeoPixel
// povrch v mobilnej aplikácii Adafruit Bluefruit LE Connect.
/
/ - Zostavte a nakreslite tento náčrt do peria nRF52
// - Otvorte aplikáciu Bluefruit LE Connect
// - Prepnite na nástroj NeoPixel
// - Kliknutím na tlačidlo „pripojiť“nadviažete spojenie a
// odoslanie metaúdajov o rozložení pixelov
// - Na aktualizáciu pixelov vo svojom zariadení použite pomôcku NeoPixel
/* POZNÁMKA: Tento náčrt vyžaduje minimálne verziu 1.1.0 programu Adafruit_Neopixel !!! */
#zahrnúť
#zahrnúť
#zahrnúť
#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"
#define PIN 16 / * Pin používaný na pohon NeoPixels * /
#define MAXCOMPONENTS 4
uint8_t *pixelBuffer = NULL;
uint8_t šírka = 0;
uint8_t výška = 0;
uint8_t krok;
uint8_t componentsValue;
bool je 400 Hz;
uint8_t komponenty = 3; // iba 3 a 4 sú platné hodnoty
Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();
// Služba BLE
BLEDfu bledfu;
BLEDis bledis;
BLEUart bleuart;
neplatné nastavenie ()
{
Serial.begin (115200);
pričom (! Sériové) oneskorenie (10); // pre nrf52840 s natívnym usb
Serial.println ("Neopixelový test Adafruit Bluefruit");
Serial.println ("--------------------------------");
Serial.println ();
Serial.println („Pripojte sa prosím pomocou aplikácie Bluefruit Connect LE“);
// Konfigurácia neopixelov
neopixel.begin ();
// Init Bluefruit
Bluefruit.begin ();
Bluefruit.setTxPower (4); // Podporované hodnoty nájdete na stránke bluefruit.h
Bluefruit.setName ("Bluefruit52");
Bluefruit. Periph.setConnectCallback (connect_callback);
// Aby bola konzistentná, OTA DFU by mala byť pridaná ako prvá, ak existuje
bledfu.begin ();
// Konfigurácia a spustenie služby informácií o zariadení
bledis.setManufacturer („Adafruit Industries“);
bledis.setModel ("Bluefruit Feather52");
bledis.begin ();
// Konfigurácia a spustenie služby BLE UART
bleuart.begin ();
// Nastavte a začnite inzerovať
startAdv ();
}
void startAdv (neplatné)
{
// Reklamný balíček
Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
Bluefruit. Advertising.addTxPower ();
// Zahrňte bleuart 128-bitový uuid
Bluefruit. Advertising.addService (bleuart);
// Paket so sekundárnou odozvou na skenovanie (voliteľné)
// Pretože v pakete Reklama nie je miesto pre 'Meno'
Bluefruit. ScanResponse.addName ();
/* Začnite inzerovať
* - Povoliť automatickú reklamu, ak je odpojený
* - Interval: rýchly režim = 20 ms, pomalý režim = 152,5 ms
* - Časový limit pre rýchly režim je 30 sekúnd
* - Začiatok (časový limit) s časovým limitom = 0 bude inzerovať navždy (pokiaľ nie je pripojený)
*
* Pre odporúčaný reklamný interval
*
*/
Bluefruit. Advertising.restartOnDisconnect (true);
Bluefruit. Advertising.setInterval (32, 244); // v jednotke 0,625 ms
Bluefruit. Advertising.setFastTimeout (30); // počet sekúnd v rýchlom režime
Bluefruit. Advertising.start (0); // 0 = Nezastavujte reklamu po n sekundách
}
neplatné connect_callback (uint16_t conn_handle)
{
// Získa odkaz na aktuálne pripojenie
BLEConnection* connection = Bluefruit. Connection (conn_handle);
char central_name [32] = {0};
connection-> getPeerName (central_name, sizeof (central_name));
Serial.print („Pripojené k“);
Serial.println (central_name);
Serial.println („Vyberte kartu„ Neopixely “, kliknite na„ Pripojiť “a bavte sa“);
}
prázdna slučka ()
{
// Ozvena prijatých údajov
ak (Bluefruit.connected () && bleuart.notifyEnabled ())
{
int príkaz = bleuart.read ();
prepnúť (príkaz) {
prípad 'V': {// Získať verziu
commandVersion ();
prestávka;
}
prípad 'S': {// Nastavenie rozmerov, komponentov, krok…
commandSetup ();
prestávka;
}
prípad 'C': {// Číry s farbou
príkazClearColor ();
prestávka;
}
prípad 'B': {// Nastavte jas
commandSetBrightness ();
prestávka;
}
prípad 'P': {// Nastaviť pixel
commandSetPixel ();
prestávka;
}
prípad 'I': {// Prijať nový obrázok
commandImage ();
prestávka;
}
}
}
}
void swapBuffers ()
{
uint8_t *base_addr = pixelBuffer;
int pixelIndex = 0;
pre (int j = 0; j <výška; j ++)
{
pre (int i = 0; i <šírka; i ++) {
ak (komponenty == 3) {
neopixel.setPixelColor (pixelIndex, neopixel. Color (*base_addr, *(base_addr+1), *(base_addr+2)));
}
inak {
neopixel.setPixelColor (pixelIndex, neopixel. Color (*base_addr, *(base_addr+1), *(base_addr+2), *(base_addr+3)));
}
base_addr+= komponenty;
pixelIndex ++;
}
pixelIndex += krok - šírka; // Presuňte pixelIndex do ďalšieho riadka (vezmite do úvahy krok)
}
neopixel.show ();
}
neplatný príkazVersion () {
Serial.println (F ("Príkaz: Kontrola verzie"));
sendResponse (NEOPIXEL_VERSION_STRING);
}
neplatný príkazSetup () {
Serial.println (F ("Príkaz: Nastavenie"));
width = bleuart.read ();
výška = bleuart.read ();
stride = bleuart.read ();
componentsValue = bleuart.read ();
is400Hz = bleuart.read ();
neoPixelType pixelType;
pixelType = componentsValue + (is400Hz? NEO_KHZ400: NEO_KHZ800);
komponenty = (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", šírka, výška);
Serial.printf ("\ tstride: %d / n", krok);
Serial.printf ("\ tpixelType %d / n", pixelType);
Serial.printf ("\ tkomponenty: %d / n", komponenty);
if (pixelBuffer! = NULL) {
vymazať pixelBuffer;
}
uint32_t veľkosť = šírka*výška;
pixelBuffer = nový uint8_t [veľkosť*komponenty];
neopixel.updateLength (veľkosť);
neopixel.updateType (pixelType);
neopixel.setPin (PIN);
// Hotový
sendResponse („OK“);
}
neplatný príkazSetBrightness () {
Serial.println (F ("Command: SetBrightness"));
// Čítanie hodnoty
uint8_t jas = bleuart.read ();
// Nastavenie jasu
neopixel.setJas (jas);
// Obnovenie pixelov
swapBuffers ();
// Hotový
sendResponse („OK“);
}
zrušiť príkazClearColor () {
Serial.println (F ("Príkaz: ClearColor"));
// Prečítajte si farbu
uint8_t farba [MAXKOMPONENTY];
pre (int j = 0; j <komponenty;) {
ak (bleuart.available ()) {
farba [j] = bleuart.read ();
j ++;
}
}
// Nastavte všetky LED diódy na farbu
int veľkosť = šírka * výška;
uint8_t *base_addr = pixelBuffer;
pre (int i = 0; i <veľkosť; i ++) {
pre (int j = 0; j <komponenty; j ++) {
*base_addr = farba [j];
base_addr ++;
}
}
// Vymeňte nárazníky
Serial.println (F ("ClearColor dokončený"));
swapBuffers ();
ak (komponenty == 3) {
Serial.printf ("\ tclear (%d, %d, %d) n", farba [0], farba [1], farba [2]);
}
inak {
Serial.printf ("\ tclear (%d, %d, %d, %d) n", farba [0], farba [1], farba [2], farba [3]);
}
// Hotový
sendResponse („OK“);
}
neplatný príkazSetPixel () {
Serial.println (F ("Príkaz: SetPixel"));
// Poloha čítania
uint8_t x = bleuart.read ();
uint8_t y = bleuart.read ();
// Čítajte farby
uint32_t pixelOffset = y*šírka+x;
uint32_t pixelDataOffset = pixelOffset*komponenty;
uint8_t *base_addr = pixelBuffer+pixelDataOffset;
pre (int j = 0; j <komponenty;) {
ak (bleuart.available ()) {
*base_addr = bleuart.read ();
base_addr ++;
j ++;
}
}
// Nastavenie farieb
uint32_t neopixelIndex = y*krok+x;
uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;
farba uint32_t;
ak (komponenty == 3) {
farba = neopixel. Color (*pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2));
Serial.printf ("\ tcolor (%d, %d, %d) n", *pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2));
}
inak {
farba = 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, farba);
neopixel.show ();
// Hotový
sendResponse („OK“);
}
zrušiť príkazImage () {
Serial.printf ("Príkaz: obrázok %dx %d, %d, %d / n", šírka, výška, komponenty, krok);
// Príjem novej vyrovnávacej pamäte pixelov
int veľkosť = šírka * výška;
uint8_t *base_addr = pixelBuffer;
pre (int i = 0; i <veľkosť; i ++) {
pre (int j = 0; j <komponenty;) {
ak (bleuart.available ()) {
*base_addr = bleuart.read ();
base_addr ++;
j ++;
}
}
/*
ak (komponenty == 3) {
uint32_t index = i*komponenty;
Serial.printf ("\ tp %d (%d, %d, %d) n", i, pixelBuffer [index], pixelBuffer [index+1], pixelBuffer [index+2]);
}
*/
}
// Vymeňte nárazníky
Serial.println (F ("Obrázok prijatý"));
swapBuffers ();
// Hotový
sendResponse („OK“);
}
void sendResponse (char const *response) {
Serial.printf ("Odoslať odpoveď: %s / n", odpoveď);
bleuart.write (odpoveď, strlen (odpoveď)*sizeof (char));
}
Krok 3: Krok 3: Nákup tienidla
Krok 4: Krok 4: Spojte všetko dohromady
Odporúča:
Klobúk nie klobúk - klobúk pre ľudí, ktorí klobúky naozaj nenosia, ale chceli by ste klobúk: 8 krokov
Klobúk nie klobúk - klobúk pre ľudí, ktorí klobúky naozaj nenosia, ale chceli by mať klobúk: Vždy som si prial, aby som mohol byť klobúkom, ale nikdy som nenašiel klobúk, ktorý by mi vyhovoval. Tento " klobúk nie klobúk " alebo fascinátor, ako sa tomu hovorí, je vrcholné riešenie môjho problému s klobúkom, v ktorom by som sa mohol zúčastniť Kentucky Derby, vákuum
4 -nožná bowlingová dráha pre robotiku, výzva: 4 kroky
4 Foot Bowling Lane pre robotiku výzva: V rámci nášho letného programu robotiky pracujem na aktualizácii niektorých výziev, ktoré sme urobili pred niekoľkými rokmi, a predstavení nových myšlienok. Tento prvý je ten, ktorý sme už urobili, ale nie takto. Predtým sme používali drevené kolky, ktoré sa osvedčili
Ako sa stretáva výzva s návrhom zdroja napájania od DC-DC Technologies: 3 kroky
Ako sa stretáva výzva s návrhom zdroja napájania od DC-DC Technologies: Budem analyzovať, ako sa s návrhom zdroja napájania spoločnosti DC-DC Technologies stretáva náročný návrh napájania. Konštruktéri napájacích systémov čelia neustálemu tlaku trhu, aby našli spôsoby, ako čo najlepšie využiť dostupné zdroje. moc. V prenosných zariadeniach s vyššou účinnosťou
Ako vyrobiť neónovú lampu (nie naozaj): 9 krokov
Ako vyrobiť neónovú lampu (nie naozaj): Tento návod vám ukáže, ako si vyrobiť jednoduchú neónovú lampu
Naozaj jednoduchý/ľahký/nekomplikovaný spôsob, ako prinútiť ľudí/ľudí/zvieratá/roboty, aby vyzerali, že majú skutočne chladnú/jasnú tepelnú víziu (farba podľa vášho výberu) pomocou GIMP: 4 kroky
Naozaj jednoduchý/ľahký/nekomplikovaný spôsob, ako prinútiť ľudí/ľudí/zvieratá/roboty, aby vyzerali, že majú skutočne chladnú/jasnú tepelnú víziu (farba podľa vášho výberu) pomocou GIMP: Prečítajte si … názov