Innholdsfortegnelse:
- Trinn 1: Trinn 1: Lodd kretsen
- Trinn 2: Trinn 2: Skriv koden
- Trinn 3: Trinn 3: Kjøpe lampeskjerm
- Trinn 4: Trinn 4: Trekk alt sammen
- Trinn 5: Trinn 5: Lag spillekort
Video: Virkelig utfordring: 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
Den moderne verden krever at mennesker går ut av det fysiske og lever innenfor det digitale.
Med utseendet til Al og spredningen av teknologi setter folk for mye tillit til maskinen og tror at den alltid er korrekt.
"Really" er ment å riste denne falske tilliten gjennom opprettelsen av en falsk løgnedetektortest. Folk vil lett tro at Really fungerer, men når det gis falske svar, vil det riste deres blinde tillit til teknologi.
Trinn 1: Trinn 1: Lodd kretsen
Fordi verkene mine bare har ett lys, så det er veldig enkelt å lodde. Hovedproblemet er i begynnelsen, jeg lodder to lys, men jeg dekket ikke eksponeringsdelen umiddelbart. Så når de to ledningene deles sammen. Det kortsluttes.
Trinn 2: Trinn 2: Skriv koden
p.p1 {margin: 0,0px 0,0px 0,0px 0,0px; linjehøyde: 15,0px; font: 12.0px Times; farge: #000000; bakgrunnsfarge: #ffffff}
p.p2 {margin: 0,0px 0,0px 0,0px 0,0px; linjehøyde: 15,0px; font: 12.0px Times; farge: #000000; bakgrunnsfarge: #ffffff; min-height: 14.0px} span.s1 {font-kerning: none}
Trinn 2: Skriv koden
/*********************************************************************
Dette er et eksempel på våre nRF52 -baserte Bluefruit LE -moduler
Hent en i dag i adafruit -butikken!
Adafruit investerer tid og ressurser ved å tilby denne åpen kildekoden, Vennligst støtt Adafruit og åpen kildekode-maskinvare ved å kjøpe
produkter fra Adafruit!
MIT -lisens, sjekk LISENS for mer informasjon
All tekst ovenfor og sprutskjermen nedenfor må inkluderes i
enhver omfordeling
*********************************************************************
/ Denne skissen er ment å brukes med NeoPixel -kontrollen
// overflate i Adafruit's Bluefruit LE Connect mobilapplikasjon.
/
/ - Kompiler og blits denne skissen til nRF52 -fjæren
// - Åpne Bluefruit LE Connect -appen
// - Bytt til NeoPixel -verktøyet
// - Klikk på "koble til" -knappen for å opprette en tilkobling og
// send metadataene om pikseloppsettet
// - Bruk NeoPixel -verktøyet til å oppdatere pikslene på enheten din
/* MERK: Denne skissen krevde minst versjon 1.1.0 av Adafruit_Neopixel !!! */
#inkludere
#inkludere
#inkludere
#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"
#define PIN 16 / * Pin som ble brukt til å kjøre NeoPixels * /
#define MAXCOMPONENTS 4
uint8_t *pixelBuffer = NULL;
uint8_t bredde = 0;
uint8_t høyde = 0;
uint8_t skritt;
uint8_t componentsValue;
bool er 400Hz;
uint8_t komponenter = 3; // bare 3 og 4 er gyldige verdier
Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();
// BLE Service
BLEDfu bledfu;
BLEDis bledis;
BLEUart bleuart;
ugyldig oppsett ()
{
Serial.begin (115200);
mens (! Seriell) forsinkelse (10); // for nrf52840 med native usb
Serial.println ("Adafruit Bluefruit Neopixel Test");
Serial.println ("--------------------------------");
Serial.println ();
Serial.println ("Vennligst koble til ved hjelp av Bluefruit Connect LE -programmet");
// Config Neopixels
neopixel.begin ();
// Init Bluefruit
Bluefruit.begin ();
Bluefruit.setTxPower (4); // Sjekk bluefruit.h for verdier som støttes
Bluefruit.setName ("Bluefruit52");
Bluefruit. Periph.setConnectCallback (connect_callback);
// For å være konsekvent må OTA DFU legges til først hvis den eksisterer
bledfu.begin ();
// Konfigurer og start Device Information Service
bledis.setManufacturer ("Adafruit Industries");
bledis.setModel ("Bluefruit Feather52");
bledis.begin ();
// Konfigurer og start BLE UART -tjenesten
bleuart.begin ();
// Sett opp og begynn å annonsere
startAdv ();
}
void startAdv (void)
{
// Annonsepakke
Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
Bluefruit. Advertising.addTxPower ();
// Inkluder bleuart 128-biters uuid
Bluefruit. Advertising.addService (bleuart);
// Sekundær skannesponspakke (valgfritt)
// Siden det ikke er plass til 'Navn' i reklamepakken
Bluefruit. ScanResponse.addName ();
/* Start annonsering
* - Aktiver automatisk annonsering hvis den er frakoblet
* - Intervall: rask modus = 20 ms, sakte modus = 152,5 ms
* - Tidsavbrudd for hurtigmodus er 30 sekunder
* - Start (timeout) med timeout = 0 vil annonsere for alltid (til du er tilkoblet)
*
* For anbefalt reklameintervall
*
*/
Bluefruit. Advertising.restartOnDisconnect (true);
Bluefruit. Advertising.setInterval (32, 244); // i enhet på 0,625 ms
Bluefruit. Advertising.setFastTimeout (30); // antall sekunder i hurtigmodus
Bluefruit. Advertising.start (0); // 0 = Ikke slutt å annonsere etter n sekunder
}
void connect_callback (uint16_t conn_handle)
{
// Få referansen til gjeldende tilkobling
BLEConnection* tilkobling = Bluefruit. Connection (conn_handle);
char central_name [32] = {0};
tilkobling-> getPeerName (sentralnavn, størrelse på (sentralnavn));
Serial.print ("Koblet til");
Serial.println (sentralnavn);
Serial.println ("Velg" Neopixels "-fanen, klikk" Connect "og ha det gøy");
}
hulrom ()
{
// Echo mottok data
hvis (Bluefruit.connected () && bleuart.notifyEnabled ())
{
int kommando = bleuart.read ();
bytte (kommando) {
case 'V': {// Få versjon
commandVersion ();
gå i stykker;
}
case 'S': {// Oppsett dimensjoner, komponenter, skritt …
commandSetup ();
gå i stykker;
}
tilfelle 'C': {// Klar med farge
commandClearColor ();
gå i stykker;
}
tilfelle 'B': {// Angi lysstyrke
commandSetBrightness ();
gå i stykker;
}
tilfelle 'P': {// Sett Pixel
commandSetPixel ();
gå i stykker;
}
case 'I': {// Motta nytt bilde
commandImage ();
gå i stykker;
}
}
}
}
void swapBuffers ()
{
uint8_t *base_addr = pixelBuffer;
int pixelIndex = 0;
for (int j = 0; j <høyde; j ++)
{
for (int i = 0; i <bredde; i ++) {
hvis (komponenter == 3) {
neopixel.setPixelColor (pixelIndex, neopixel. Color (*base_addr, *(base_addr+1), *(base_addr+2)));
}
annet {
neopixel.setPixelColor (pixelIndex, neopixel. Color (*base_addr, *(base_addr+1), *(base_addr+2), *(base_addr+3)));
}
base_addr+= komponenter;
pixelIndex ++;
}
pixelIndex += skritt - bredde; // Flytt pixelIndex til neste rad (ta hensyn til skrittet)
}
neopixel.show ();
}
void commandVersion () {
Serial.println (F ("Kommando: Versjonskontroll"));
sendResponse (NEOPIXEL_VERSION_STRING);
}
void commandSetup () {
Serial.println (F ("Kommando: Oppsett"));
bredde = bleuart.read ();
høyde = bleuart.read ();
stride = bleuart.read ();
componentsValue = bleuart.read ();
is400Hz = bleuart.read ();
neoPixelType pixelType;
pixelType = componentsValue + (is400Hz? NEO_KHZ400: NEO_KHZ800);
komponenter = (komponenterValue == NEO_RGB || komponenterValue == NEO_RBG || komponenterValue == NEO_GRB || komponenterValue == NEO_GBR || komponenterValue == NEO_BRG || komponenterValue == NEO_BGR)? 3: 4;
Serial.printf ("\ tsize: %dx %d / n", bredde, høyde);
Serial.printf ("\ tstride: %d / n", skritt);
Serial.printf ("\ tpixelType %d / n", pixelType);
Serial.printf ("\ tkomponenter: %d / n", komponenter);
if (pixelBuffer! = NULL) {
slett pixelBuffer;
}
uint32_t størrelse = bredde*høyde;
pixelBuffer = ny uint8_t [størrelse*komponenter];
neopixel.updateLength (størrelse);
neopixel.updateType (pixelType);
neopixel.setPin (PIN);
// Ferdig
sendResponse ("OK");
}
void commandSetBrightness () {
Serial.println (F ("Command: SetBrightness"));
// Les verdi
uint8_t lysstyrke = bleuart.read ();
// Still inn lysstyrke
neopixel.setBrightness (lysstyrke);
// Oppdater piksler
swapBuffers ();
// Ferdig
sendResponse ("OK");
}
void commandClearColor () {
Serial.println (F ("Kommando: ClearColor"));
// Les farge
uint8_t farge [MAXCOMPONENTS];
for (int j = 0; j <komponenter;) {
if (bleuart.available ()) {
farge [j] = bleuart.read ();
j ++;
}
}
// Sett alle lysdioder til farge
int størrelse = bredde * høyde;
uint8_t *base_addr = pixelBuffer;
for (int i = 0; i <size; i ++) {
for (int j = 0; j <komponenter; j ++) {
*base_addr = farge [j];
base_addr ++;
}
}
// Bytt buffere
Serial.println (F ("ClearColor fullført"));
swapBuffers ();
hvis (komponenter == 3) {
Serial.printf ("\ tclear (%d, %d, %d) n", farge [0], farge [1], farge [2]);
}
annet {
Serial.printf ("\ tclear (%d, %d, %d, %d) n", farge [0], farge [1], farge [2], farge [3]);
}
// Ferdig
sendResponse ("OK");
}
void commandSetPixel () {
Serial.println (F ("Command: SetPixel"));
// Les posisjon
uint8_t x = bleuart.read ();
uint8_t y = bleuart.read ();
// Les farger
uint32_t pixelOffset = y*bredde+x;
uint32_t pixelDataOffset = pixelOffset*komponenter;
uint8_t *base_addr = pixelBuffer+pixelDataOffset;
for (int j = 0; j <komponenter;) {
if (bleuart.available ()) {
*base_addr = bleuart.read ();
base_addr ++;
j ++;
}
}
// Sett farger
uint32_t neopixelIndex = y*skritt+x;
uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;
uint32_t farge;
hvis (komponenter == 3) {
color = neopixel. Color (*pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2));
Serial.printf ("\ tcolor (%d, %d, %d) n", *pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2));
}
annet {
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, farge);
neopixel.show ();
// Ferdig
sendResponse ("OK");
}
void commandImage () {
Serial.printf ("Kommando: Bilde %dx %d, %d, %d / n", bredde, høyde, komponenter, skritt);
// Motta ny pikselbuffer
int størrelse = bredde * høyde;
uint8_t *base_addr = pixelBuffer;
for (int i = 0; i <size; i ++) {
for (int j = 0; j <komponenter;) {
if (bleuart.available ()) {
*base_addr = bleuart.read ();
base_addr ++;
j ++;
}
}
/*
hvis (komponenter == 3) {
uint32_t index = i*komponenter;
Serial.printf ("\ tp %d (%d, %d, %d) n", i, pixelBuffer [index], pixelBuffer [index+1], pixelBuffer [index+2]);
}
*/
}
// Bytt buffere
Serial.println (F ("Bilde mottatt"));
swapBuffers ();
// Ferdig
sendResponse ("OK");
}
void sendResponse (char const *response) {
Serial.printf ("Send svar: %s / n", svar);
bleuart.write (respons, strlen (respons)*sizeof (char));
}
Trinn 3: Trinn 3: Kjøpe lampeskjerm
Trinn 4: Trinn 4: Trekk alt sammen
Anbefalt:
Hvordan lage virkelig billige trykksensorer: 6 trinn (med bilder)
Hvordan lage virkelig billige trykksensorer: Jeg har hektet meg på å lage brytere fra vanlige husholdningsartikler i det siste, og jeg bestemte meg for å lage min egen trykksensor på et budsjett fra noen svamper jeg hadde liggende. Grunnen til at dette er annerledes enn andre versjoner av budsjetttrykkssensorer er at
Virkelig WiFi Extender: 5 trinn
Truly WiFi Extender: Introduction Truly WiFi Extender er en WiFi-repeater basert på Raspberry Pi Zero W. Det er et fint alternativ til en kommersiell WiFi-repeater som kombinerer rimelige (under 10USD) og svært tilpassbar programvare. Det kan også kjøre noen annonseblokkerende løsninger
En Raspberry Pi NAS som virkelig ser ut som en NAS: 13 trinn (med bilder)
En Raspberry Pi NAS som virkelig ser ut som en NAS: Hvorfor en Raspberry Pi NAS Vel, jeg har søkt etter en vakker, men plassbesparende Raspberry Pi NAS fra internett, og jeg fant ingenting. Jeg fant noen NAS -design med en Raspberry Pi som ble limt på en trebasert, men det er ikke det jeg vil. Jeg ønsker
Gjør et virkelig livskrig Tower Defense Game: 11 trinn
Gjør et virkelig livskrig Tower Defense Game: Hei, vi er GBU! Teamet vårt ble tildelt en oppgave i vår klasse VG100, Intro to Engineering, å designe og bygge et virkelig Warzone Tower Defense Game. VG100 er en kjerneklasse alle nybegynnere må følge ved Joint Institute (JI.) The Joint Inst
Lag en virkelig kul matrise i Python !: 6 trinn
Lag en virkelig kul matrise i Python !: Hei folkens! Denne instruktive vil lære deg hvordan du lager en matrise i Python! Vanligvis ville folk lage en matrise i Batch fordi det er enkelt. Men denne gangen skal jeg vise deg hvordan du lager en matrise på et av de kraftige dataspråkene