Inhoudsopgave:
- Stap 1: Stap 1: Soldeer het circuit
- Stap 2: Stap 2: Schrijf de code
- Stap 3: Stap 3: Lampenkap kopen
- Stap 4: Stap 4: Trek het allemaal samen
- Stap 5: Stap 5: Speelkaarten maken
Video: Echt een uitdaging: 5 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
De moderne wereld vereist dat mensen uit het fysieke stappen en in het digitale leven.
Met het verschijnen van Al en de verspreiding van technologie hebben mensen te veel vertrouwen in de machine en geloven dat deze altijd correct is.
"Echt" is bedoeld om dit valse vertrouwen te schudden door het creëren van een nep-leugendetectortest. Mensen zullen gemakkelijk geloven dat Werkelijk werkt, maar wanneer valse antwoorden worden gegeven, zal dit hun blinde vertrouwen in technologie aan het wankelen brengen.
Stap 1: Stap 1: Soldeer het circuit
Omdat mijn werken maar één lampje hebben, is het heel gemakkelijk te solderen. Het grootste probleem is dat ik in het begin twee lampjes soldeer, maar ik heb het belichtingsgedeelte niet meteen bedekt. Dus wanneer de twee draden elkaar raken. Het komt te kort.
Stap 2: Stap 2: Schrijf de code
p.p1 {marge: 0.0px 0.0px 0.0px 0.0px; regelhoogte: 15.0px; lettertype: 12.0px keer; kleur: #000000; achtergrondkleur: #ffffff}
p.p2 {marge: 0.0px 0.0px 0.0px 0.0px; regelhoogte: 15.0px; lettertype: 12.0px keer; kleur: #000000; achtergrondkleur: #ffffff; min-hoogte: 14.0px} span.s1 {font-kerning: geen}
Stap 2: Schrijf de code
/*********************************************************************
Dit is een voorbeeld van onze op nRF52 gebaseerde Bluefruit LE-modules
Haal er vandaag nog een op in de adafruit shop!
Adafruit investeert tijd en middelen in het leveren van deze open source code, ondersteun Adafruit en open-source hardware door te kopen
producten van Adafruit!
MIT-licentie, check LICENSE voor meer informatie
Alle bovenstaande tekst en het onderstaande opstartscherm moeten worden opgenomen in:
elke herverdeling
*********************************************************************
/ Deze schets is bedoeld voor gebruik met de NeoPixel-besturing
// verschijnen in de Bluefruit LE Connect mobiele applicatie van Adafruit.
/
/ - Compileer en flash deze schets naar de nRF52 Feather
// - Open de Bluefruit LE Connect-app
// - Schakel over naar het NeoPixel-hulpprogramma
// - Klik op de knop 'verbinden' om een verbinding tot stand te brengen en
// stuur de metagegevens over de pixellay-out
// - Gebruik het NeoPixel-hulpprogramma om de pixels op uw apparaat bij te werken
/* OPMERKING: Voor deze schets was minimaal versie 1.1.0 van Adafruit_Neopixel vereist !!! */
#erbij betrekken
#erbij betrekken
#erbij betrekken
#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"
#define PIN 16 /* Pin gebruikt om de NeoPixels aan te sturen */
#define MAXCOMPONENTEN 4
uint8_t *pixelBuffer = NULL;
uint8_t breedte = 0;
uint8_t hoogte = 0;
uint8_t pas;
uint8_t componentenWaarde;
bool is 400 Hz;
uint8_t componenten = 3; // alleen 3 en 4 zijn geldige waarden
Adafruit_NeoPixel neopixel = Adafruit_NeoPixel();
// BLE-service
BLEDfu-bledfu;
BLEDis bledis;
BLEUart bleuart;
ongeldige setup()
{
Serieel.begin(115200);
while (!Serial) vertraging(10); // voor nrf52840 met native usb
Serial.println ("Adafruit Bluefruit Neopixel-test");
Serial.println ("--------------------------------");
Serieel.println();
Serial.println("Maak verbinding met de Bluefruit Connect LE-applicatie");
// Config Neopixels
neopixel.begin();
// Init Bluefruit
Blauwfruit.begin();
Bluefruit.setTxPower(4); // Controleer bluefruit.h voor ondersteunde waarden
Bluefruit.setName("Bluefruit52");
Bluefruit. Periph.setConnectCallback(connect_callback);
// Om consistent te zijn, moet OTA DFU eerst worden toegevoegd als deze bestaat
bledfu.begin();
// Apparaatinformatieservice configureren en starten
bledis.setFabrikant("Adafruit Industries");
bledis.setModel("Bluefruit Feather52");
bledis.begin();
// Configureer en start de BLE UART-service
bleuart.begin();
// Instellen en beginnen met adverteren
startAdv();
}
void startAdv(void)
{
// Advertentiepakket
Bluefruit. Advertising.addFlags(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
Bluefruit. Advertising.addTxPower();
// Inclusief bleuart 128-bit uuid
Bluefruit. Advertising.addService(bleuart);
// Secundair Scan Response-pakket (optioneel)
// Aangezien er geen ruimte is voor 'Naam' in Advertentiepakket
Bluefruit. ScanResponse.addName();
/* Begin met adverteren
* - Schakel automatisch adverteren in als de verbinding is verbroken
* - Interval: snelle modus = 20 ms, langzame modus = 152,5 ms
* - Time-out voor snelle modus is 30 seconden
* - Start (time-out) met time-out = 0 zal voor altijd adverteren (totdat verbonden)
*
* Voor aanbevolen advertentie-interval
*
*/
Bluefruit. Advertising.restartOnDisconnect(true);
Bluefruit. Advertising.setInterval(32, 244); // in eenheid van 0,625 ms
Bluefruit. Advertising.setFastTimeout(30); // aantal seconden in snelle modus
Bluefruit. Adverteren.start(0); // 0 = Stop niet met adverteren na n seconden
}
ongeldig connect_callback(uint16_t conn_handle)
{
// Haal de verwijzing naar de huidige verbinding op
BLEConnection*-verbinding = Bluefruit. Connection (conn_handle);
char centrale_naam [32] = { 0 };
verbinding->getPeerName(central_name, sizeof(central_name));
Serial.print("Verbonden met ");
Serial.println(centrale_naam);
Serial.println ("Selecteer het tabblad 'Neopixels', klik op 'Verbinden' en veel plezier");
}
lege lus()
{
// Echo ontvangen gegevens
if (Bluefruit.connected() && bleuart.notifyEnabled())
{
int commando = bleuart.read();
schakelaar (commando) {
geval 'V': { // Versie ophalen
commandVersion();
pauze;
}
case 'S': { // Setup afmetingen, componenten, stap…
commandoSetup();
pauze;
}
case 'C': { // Helder met kleur
commandoClearColor();
pauze;
}
geval 'B': { // Helderheid instellen
commandoSetBrightness();
pauze;
}
geval 'P': { // Pixel instellen
commandoSetPixel();
pauze;
}
case 'I': { // Ontvang nieuwe afbeelding
commandoImage();
pauze;
}
}
}
}
void swapBuffers()
{
uint8_t *base_addr = pixelbuffer;
int pixelIndex = 0;
voor (int j = 0; j < hoogte; j++)
{
voor (int i = 0; i < breedte; i++) {
if (componenten == 3) {
neopixel.setPixelColor(pixelIndex, neopixel. Color(*base_addr, *(base_addr+1), *(base_addr+2)));
}
anders {
neopixel.setPixelColor(pixelIndex, neopixel. Color(*base_addr, *(base_addr+1), *(base_addr+2), *(base_addr+3)));
}
base_addr+=componenten;
pixelIndex++;
}
pixelIndex += stap - breedte; // Verplaats pixelIndex naar de volgende rij (houd rekening met de pas)
}
neopixel.show();
}
void commandVersion() {
Serial.println(F("Opdracht: Versiecontrole"));
sendResponse(NEOPIXEL_VERSION_STRING);
}
ongeldig commandoSetup() {
Serial.println(F("Opdracht: Setup"));
breedte = bleuart.read();
hoogte = bleuart.lezen();
stride = bleuart.read();
componentenWaarde = bleuart.read();
is400Hz = blauw.lezen();
neoPixelType pixelType;
pixelType = componentenWaarde + (is400Hz ? NEO_KHZ400: NEO_KHZ800);
Components = (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", breedte, hoogte);
Serial.printf("\tstride: %d\n", stride);
Serial.printf("\tpixelType %d\n", pixelType);
Serial.printf("\tcomponenten: %d\n", componenten);
if (pixelBuffer != NULL) {
verwijder pixelBuffer;
}
uint32_t maat = breedte * hoogte;
pixelBuffer = nieuw uint8_t[grootte*componenten];
neopixel.updateLength(grootte);
neopixel.updateType(pixelType);
neopixel.setPin(PIN);
// Gedaan
sendResponse("OK");
}
ongeldig commandoSetBrightness() {
Serial.println(F("Command: SetBrightness"));
// Lees waarde
uint8_t helderheid = bleuart.read();
// Helderheid instellen
neopixel.setHelderheid (helderheid);
// Ververs pixels
swapBuffers();
// Gedaan
sendResponse("OK");
}
ongeldig commandoClearColor() {
Serial.println(F("Opdracht: ClearColor"));
// Lees kleur
uint8_t kleur [MAXCOMPONENTEN];
voor (int j = 0; j < componenten;) {
if (bleuart.beschikbaar()) {
kleur[j] = bleuart.read();
j++;
}
}
// Zet alle leds op kleur
int maat = breedte * hoogte;
uint8_t *base_addr = pixelbuffer;
voor (int i = 0; i < grootte; i++) {
voor (int j = 0; j < componenten; j++) {
*base_addr = kleur[j];
basis_addr++;
}
}
// Wissel buffers
Serial.println(F("ClearColor voltooid"));
swapBuffers();
if (componenten == 3) {
Serial.printf("\tclear (%d, %d, %d)\n", kleur[0], kleur[1], kleur[2]);
}
anders {
Serial.printf("\tclear (%d, %d, %d, %d)\n", kleur[0], kleur[1], kleur[2], kleur[3]);
}
// Gedaan
sendResponse("OK");
}
ongeldig commandoSetPixel() {
Serial.println(F("Opdracht: SetPixel"));
// Lees positie
uint8_t x = bleuart.read();
uint8_t y = bleuart.read();
// Lees kleuren
uint32_t pixelOffset = y*breedte+x;
uint32_t pixelDataOffset = pixelOffset*componenten;
uint8_t *base_addr = pixelBuffer+pixelDataOffset;
voor (int j = 0; j < componenten;) {
if (bleuart.beschikbaar()) {
*base_addr = bleuart.read();
basis_addr++;
j++;
}
}
// Kleuren instellen
uint32_t neopixelIndex = y*stride+x;
uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;
uint32_t kleur;
if (componenten == 3) {
kleur = neopixel. Color(*pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2));
Serial.printf("\tcolor (%d, %d, %d)\n", *pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2));
}
anders {
kleur = 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, kleur);
neopixel.show();
// Gedaan
sendResponse("OK");
}
ongeldig commandoImage() {
Serial.printf("Opdracht: Afbeelding %dx%d, %d, %d\n", breedte, hoogte, componenten, stap);
// Ontvang nieuwe pixelbuffer
int maat = breedte * hoogte;
uint8_t *base_addr = pixelbuffer;
voor (int i = 0; i < grootte; i++) {
voor (int j = 0; j < componenten;) {
if (bleuart.beschikbaar()) {
*base_addr = bleuart.read();
basis_addr++;
j++;
}
}
/*
if (componenten == 3) {
uint32_t index = i*componenten;
Serial.printf("\tp%d (%d, %d, %d)\n", i, pixelBuffer[index], pixelBuffer[index+1], pixelBuffer[index+2]);
}
*/
}
// Wissel buffers
Serial.println(F("Beeld ontvangen"));
swapBuffers();
// Gedaan
sendResponse("OK");
}
void sendResponse (char const * respons) {
Serial.printf ("Reactie verzenden: %s\n", reactie);
bleuart.write(antwoord, strlen(antwoord)*sizeof(char));
}
Stap 3: Stap 3: Lampenkap kopen
Stap 4: Stap 4: Trek het allemaal samen
Aanbevolen:
Een Raspberry Pi NAS die er echt uitziet als een NAS - Ajarnpa
Een Raspberry Pi NAS die er echt uitziet als een NAS: waarom een Raspberry Pi NAS Nou, ik heb op internet gezocht naar een mooie maar ruimtebesparende Raspberry Pi NAS en ik heb niets gevonden. Ik vond wel een NAS-ontwerp met een Raspberry Pi die op een houten basis was gelijmd, maar dat is niet wat ik wil. Ik wil
Maak een echt coole matrix in Python!: 6 stappen
Maak een echt coole matrix in Python!: Hallo jongens! Deze instructable leert je hoe je een matrix maakt in Python! Gewoonlijk zouden mensen een matrix maken in Batch omdat het gemakkelijk is. Maar deze keer laat ik je zien hoe je een matrix maakt in een van de krachtige computertalen
Hat Not Hat - een hoed voor mensen die niet echt hoeden dragen, maar wel een hoed willen: 8 stappen
Hat Not Hat - een hoed voor mensen die niet echt hoeden dragen, maar wel een hoed willen Ervaring: Ik heb altijd gewenst dat ik een hoedenmens kon zijn, maar ik heb nog nooit een hoed gevonden die voor mij werkt. Deze "Hoed Niet Hoed", of fascinator zoals het wordt genoemd, is een uiterst knapperige oplossing voor mijn hoedenprobleem waarbij ik de Kentucky Derby zou kunnen bijwonen, vacu
Echt, ECHT gemakkelijke USB-motor! - Ajarnpa
Echt, ECHT gemakkelijke USB-motor!: Eindelijk, mijn 2e instructable!!! Dit is een ventilator voor u of uw computer die op een beschikbare USB-poort werkt. Ik beveel het aan voor beginners in elektronica, tot aan de pro's. Het is makkelijk en leuk, je kunt het in letterlijk vijf minuten maken!!! ECHT
Een echt eenvoudige/gemakkelijke/niet gecompliceerde manier om mensen/mensen/dieren/robots eruit te laten zien alsof ze een echt koel/helder warmtebeeld hebben (kleur naar keuze) met behulp van GIMP - Ajarnpa
Een echt eenvoudige/gemakkelijke/niet gecompliceerde manier om mensen/mensen/dieren/robots eruit te laten zien alsof ze een echt koel/helder warmtebeeld hebben (kleur naar keuze) met behulp van GIMP: Lees…de…titel