Inhoudsopgave:

Echt een uitdaging: 5 stappen
Echt een uitdaging: 5 stappen

Video: Echt een uitdaging: 5 stappen

Video: Echt een uitdaging: 5 stappen
Video: Geef mijn moeder eens een zoen - Sluipschutters (S5A2) 2024, Juli-
Anonim
Image
Image
Stap 1: Soldeer het circuit
Stap 1: Soldeer het circuit

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 3: Lampenkap kopen
Stap 3: Lampenkap kopen
Stap 3: Lampenkap kopen
Stap 3: Lampenkap kopen

Stap 4: Stap 4: Trek het allemaal samen

Aanbevolen: