Table des matières:

Vraiment défi : 5 étapes
Vraiment défi : 5 étapes

Vidéo: Vraiment défi : 5 étapes

Vidéo: Vraiment défi : 5 étapes
Vidéo: Les 5 étapes de l'orgasme ! (c'est fou) 2024, Juillet
Anonim
Image
Image
Étape 1: souder le circuit
Étape 1: souder le circuit

Le monde moderne exige que les humains sortent du physique et vivent dans le numérique.

Avec l'apparition d'Al et la prolifération de la technologie, les gens font trop confiance à la machine et croient qu'elle est toujours correcte.

"Vraiment" est destiné à ébranler cette fausse confiance par la création d'un faux test de détecteur de mensonge. Les gens croiront facilement que Really fonctionne, mais lorsque de fausses réponses sont fournies, cela ébranlera leur confiance aveugle dans la technologie.

Étape 1: Étape 1: Souder le circuit

Parce que mes œuvres n'ont qu'une seule lumière, il est donc très facile à souder. Le problème principal est au début, je soude deux lumières, mais je n'ai pas couvert la partie exposition tout de suite. Ainsi, lorsque les deux fils se touchent. C'est court.

Étape 2: Étape 2: Écrivez le code

p.p1 {marge: 0.0px 0.0px 0.0px 0.0px; hauteur de ligne: 15,0 px; police: 12.0px Times; couleur: #000000; couleur d'arrière-plan: #ffffff}

p.p2 {marge: 0.0px 0.0px 0.0px 0.0px; hauteur de ligne: 15,0 px; police: 12.0px Times; couleur: #000000; couleur d'arrière-plan: #ffffff; min-height: 14,0 px} span.s1 {font-kerning: aucun}

Étape 2: écrivez le code

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

Ceci est un exemple pour nos modules Bluefruit LE basés sur nRF52

Achetez-en un aujourd'hui dans la boutique adafruit !

Adafruit investit du temps et des ressources pour fournir ce code open source, veuillez prendre en charge Adafruit et le matériel open source en achetant

produits d'Adafruit !

Licence MIT, consultez LICENCE pour plus d'informations

Tout le texte ci-dessus et l'écran de démarrage ci-dessous doivent être inclus dans

toute redistribution

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

/ Ce croquis est destiné à être utilisé avec le contrôle NeoPixel

// surface dans l'application mobile Bluefruit LE Connect d'Adafruit.

/

/ - Compilez et flashez ce croquis sur le nRF52 Feather

// - Ouvrir l'application Bluefruit LE Connect

// - Bascule vers l'utilitaire NeoPixel

// - Cliquez sur le bouton 'connecter' pour établir une connexion et

// envoyer les métadonnées sur la disposition des pixels

// - Utilisez l'utilitaire NeoPixel pour mettre à jour les pixels de votre appareil

/* NOTE: Ce sketch nécessitait au moins la version 1.1.0 d'Adafruit_Neopixel !!! */

#comprendre

#comprendre

#comprendre

#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"

#define PIN 16 /* Pin utilisé pour piloter les NeoPixels */

#définir MAXCOMPONENTS 4

uint8_t *pixelBuffer = NULL;

uint8_t largeur = 0;

uint8_t hauteur = 0;

uint8_t foulée;

uint8_t composantsValue;

bool is400Hz;

composants uint8_t = 3; // seuls 3 et 4 sont des valeurs valides

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel();

// Service BLE

BLEDfu bledfu;

BLEDis bledis;

BLEUart bleuart;

void setup()

{

Serial.begin(115200);

while (!Serial) delay(10); // pour nrf52840 avec usb natif

Serial.println ("Adafruit Bluefruit Neopixel Test");

Serial.println("--------------------------------");

Serial.println();

Serial.println("Veuillez vous connecter en utilisant l'application Bluefruit Connect LE");

// Configuration des néopixels

neopixel.begin();

// Init Bluefruit

Bluefruit.begin();

Bluefruit.setTxPower(4); // Vérifiez bluefruit.h pour les valeurs prises en charge

Bluefruit.setName("Bluefruit52");

Bluefruit. Periph.setConnectCallback(connect_callback);

// Pour être cohérent, OTA DFU doit être ajouté en premier s'il existe

bledfu.begin();

// Configurer et démarrer le service d'informations sur le périphérique

bledis.setFabricant ("Adafruit Industries");

bledis.setModel("Bluefruit Feather52");

bledis.begin();

// Configurer et démarrer le service BLE UART

bleuart.begin();

// Configurer et lancer la publicité

startAdv();

}

void startAdv(void)

{

// Paquet publicitaire

Bluefruit. Advertising.addFlags(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);

Bluefruit. Advertising.addTxPower();

// Inclut l'uuid bleuart 128 bits

Bluefruit. Advertising.addService(bleuart);

// Paquet de réponse d'analyse secondaire (facultatif)

// Puisqu'il n'y a pas de place pour 'Nom' dans le paquet publicitaire

Bluefruit. ScanResponse.addName();

/* Commencer la publicité

* - Activer la publicité automatique si déconnecté

* - Intervalle: mode rapide = 20 ms, mode lent = 152,5 ms

* - Le délai d'attente pour le mode rapide est de 30 secondes

* - Start(timeout) avec timeout = 0 fera de la publicité pour toujours (jusqu'à la connexion)

*

* Pour l'intervalle publicitaire recommandé

*

*/

Bluefruit. Advertising.restartOnDisconnect(true);

Bluefruit. Advertising.setInterval (32, 244); // en unité de 0,625 ms

Bluefruit. Advertising.setFastTimeout(30); // nombre de secondes en mode rapide

Bluefruit. Advertising.start(0); // 0 = Ne pas arrêter la publicité après n secondes

}

void connect_callback (uint16_t conn_handle)

{

// Récupère la référence à la connexion courante

BLEConnection* connection = Bluefruit. Connection(conn_handle);

char nom_central[32] = { 0 };

connection->getPeerName(central_name, sizeof(central_name));

Serial.print("Connecté à ");

Serial.println(nom_central);

Serial.println("Veuillez sélectionner l'onglet 'Neopixels', cliquez sur 'Connect' et amusez-vous");

}

boucle vide()

{

// Echo des données reçues

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

{

commande int = bleuart.read();

commutateur (commande) {

case 'V': { // Obtenir la version

commandVersion();

Pause;

}

case 'S': { // Configuration des dimensions, des composants, de la foulée…

commandSetup();

Pause;

}

case 'C': { // Effacer avec la couleur

commandClearColor();

Pause;

}

case 'B': { // Définir la luminosité

commandSetBrightness();

Pause;

}

case 'P': { // Définir le pixel

commandSetPixel();

Pause;

}

case 'I': { // Recevoir une nouvelle image

commandeImage();

Pause;

}

}

}

}

annuler les tampons d'échange()

{

uint8_t *base_addr = pixelBuffer;

int pixelIndex = 0;

pour (int j = 0; j < hauteur; j++)

{

pour (int i = 0; i < largeur; i++) {

si (composants == 3) {

neopixel.setPixelColor(pixelIndex, neopixel. Color(*base_addr, *(base_addr+1), *(base_addr+2)));

}

autre {

neopixel.setPixelColor(pixelIndex, neopixel. Color(*base_addr, *(base_addr+1), *(base_addr+2), *(base_addr+3)));

}

base_addr+=composants;

pixelIndex++;

}

pixelIndex += foulée - largeur; // Déplace pixelIndex à la ligne suivante (prend en compte la foulée)

}

neopixel.show();

}

void commandVersion() {

Serial.println(F("Commande: Vérification de la version"));

envoyerRéponse(NEOPIXEL_VERSION_STRING);

}

void commandSetup() {

Serial.println(F("Commande: Configuration"));

largeur = bleuart.read();

hauteur = bleuart.read();

foulée = bleuart.read();

composantsValeur = bleuart.read();

is400Hz = bleuart.read();

neoPixelType pixelType;

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

composants = (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", largeur, hauteur);

Serial.printf("\tstride: %d\n", foulée);

Serial.printf("\tpixelType %d\n", pixelType);

Serial.printf("\tcomponents: %d\n", composants);

if (pixelBuffer != NULL) {

delete pixelBuffer;

}

uint32_t taille = largeur*hauteur;

pixelBuffer = new uint8_t[taille*composants];

neopixel.updateLength(taille);

neopixel.updateType(pixelType);

neopixel.setPin(PIN);

// Terminé

sendResponse("OK");

}

void commandSetBrightness() {

Serial.println(F("Commande: Définir la luminosité"));

// Lire la valeur

uint8_t luminosité = bleuart.read();

// Régler la luminosité

neopixel.setBrightness(luminosité);

// Rafraîchir les pixels

swapBuffers();

// Terminé

sendResponse("OK");

}

void commandClearColor() {

Serial.println(F("Commande: ClearColor"));

// Lire la couleur

uint8_t couleur[MAXCOMPONENTS];

for (int j = 0; j < composants;) {

if (bleuart.available()) {

couleur[j] = bleuart.lire();

j++;

}

}

// Mettre toutes les leds en couleur

int taille = largeur * hauteur;

uint8_t *base_addr = pixelBuffer;

pour (int i = 0; i < taille; i++) {

for (int j = 0; j < composants; j++) {

*base_addr = couleur[j];

base_addr++;

}

}

// Échanger les tampons

Serial.println(F("ClearColor terminé"));

swapBuffers();

si (composants == 3) {

Serial.printf("\tclear (%d, %d, %d)\n", color[0], color[1], color[2]);

}

autre {

Serial.printf("\tclear (%d, %d, %d, %d)\n", color[0], color[1], color[2], color[3]);

}

// Terminé

sendResponse("OK");

}

void commandSetPixel() {

Serial.println(F("Commande: SetPixel"));

// Position de lecture

uint8_t x = bleuart.read();

uint8_t y = bleuart.read();

// Lire les couleurs

uint32_t pixelOffset = y*largeur+x;

uint32_t pixelDataOffset = pixelOffset*composants;

uint8_t *base_addr = pixelBuffer+pixelDataOffset;

for (int j = 0; j < composants;) {

if (bleuart.available()) {

*base_addr = bleuart.read();

base_addr++;

j++;

}

}

// Définir les couleurs

uint32_t neopixelIndex = y* foulée+x;

uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;

uint32_t couleur;

si (composants == 3) {

color = neopixel. Color(*pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2));

Serial.printf("\tcolor (%d, %d, %d)\n", *pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2));

}

autre {

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, couleur);

neopixel.show();

// Terminé

sendResponse("OK");

}

void image de commande () {

Serial.printf("Commande: Image %dx%d, %d, %d\n", largeur, hauteur, composants, foulée);

// Recevoir un nouveau tampon de pixels

int taille = largeur * hauteur;

uint8_t *base_addr = pixelBuffer;

pour (int i = 0; i < taille; i++) {

for (int j = 0; j < composants;) {

if (bleuart.available()) {

*base_addr = bleuart.read();

base_addr++;

j++;

}

}

/*

si (composants == 3) {

uint32_t index = i*composants;

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

}

*/

}

// Échanger les tampons

Serial.println(F("Image reçue"));

swapBuffers();

// Terminé

sendResponse("OK");

}

void sendResponse(char const *response) {

Serial.printf("Envoyer la réponse: %s\n", réponse);

bleuart.write(response, strlen(response)*sizeof(char));

}

Étape 3: Étape 3: Acheter un abat-jour

Étape 3: Acheter un abat-jour
Étape 3: Acheter un abat-jour
Étape 3: Acheter un abat-jour
Étape 3: Acheter un abat-jour

Étape 4: Étape 4: Rassemblez le tout

Conseillé: