Taula de continguts:
- Pas 1: Pas 1: soldeu el circuit
- Pas 2: Pas 2: escriviu el codi
- Pas 3: Pas 3: Comprar pantalla de pantalla
- Pas 4: Pas 4: estireu-ho tot junt
- Pas 5: Pas 5: Creació de cartes
Vídeo: Really Challenge: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
El món modern requereix que els humans surtin del físic i visquin dins del digital.
Amb l’aparició d’Al i la proliferació de tecnologia, la gent confia massa en la màquina i creu que sempre serà correcta.
"Realment" té com a objectiu sacsejar aquesta falsa confiança mitjançant la creació d'una prova falsa del detector de mentides. La gent creurà fàcilment que realment funciona, però quan es proporcionen respostes falses, trontollarà la seva cega confiança en la tecnologia.
Pas 1: Pas 1: soldeu el circuit
Com que les meves obres només tenen una llum, per tant, és molt fàcil de soldar. El problema principal és al principi, he soldat dues llums, però no he cobert la part d'exposició immediatament. Per tant, quan els dos cables es toquen junts. Es queda curt.
Pas 2: Pas 2: escriviu el codi
p.p1 {margin: 0,0px 0,0px 0,0px 0,0px; alçada de línia: 15,0 px; font: 12.0px Times; color: # 000000; color de fons: #ffffff}
p.p2 {margin: 0,0px 0,0px 0,0px 0,0px; alçada de línia: 15,0 px; font: 12.0px Times; color: # 000000; color de fons: #ffffff; alçada mínima: 14,0 px} span.s1 {font-kerning: none}
Pas 2: escriviu el codi
/*********************************************************************
Aquest és un exemple per als nostres mòduls Bluefruit LE basats en nRF52
Trieu-ne un avui mateix a la botiga d’adafruit!
Adafruit inverteix temps i recursos proporcionant aquest codi de codi obert, Si us plau, admeti Adafruit i el maquinari de codi obert comprant
productes d'Adafruit!
Llicència MIT, consulteu la LLICÈNCIA per obtenir més informació
S'ha d'incloure tot el text anterior i la pantalla de presentació següent
qualsevol redistribució
*********************************************************************
/ Aquest esbós està pensat per ser utilitzat amb el control NeoPixel
// apareix a l'aplicació mòbil Bluefruit LE Connect d'Adafruit.
/
/ - Compileu i feu flash aquest esbós a la ploma nRF52
// - Obriu l'aplicació Bluefruit LE Connect
// - Canvieu a la utilitat NeoPixel
// - Feu clic al botó "connectar" per establir una connexió i
// envieu les metadades sobre el disseny de píxels
// - Utilitzeu la utilitat NeoPixel per actualitzar els píxels del dispositiu
/ * NOTA: Aquest esbós requereix com a mínim la versió 1.1.0 d'Adafruit_Neopixel !!! * /
#incloure
#incloure
#incloure
#define NEOPIXEL_VERSION_STRING "Neopixel v2.0"
#define PIN 16 / * Pin utilitzat per conduir els NeoPixels * /
#define MAXCOMPONENTS 4
uint8_t * pixelBuffer = NULL;
uint8_t ample = 0;
uint8_t alçada = 0;
uint8_t calma;
uint8_t componentsValue;
bool is400Hz;
uint8_t components = 3; // només el 3 i el 4 són valors vàlids
Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();
// Servei BLE
BLEDfu bledfu;
BLEDis bledis;
BLEUart bleuart;
configuració nul·la ()
{
Serial.begin (115200);
while (! Serial) delay (10); // per nrf52840 amb usb natiu
Serial.println ("Adafruit Bluefruit Neopixel Test");
Serial.println ("--------------------------------");
Serial.println ();
Serial.println ("Connecteu-vos mitjançant l'aplicació Bluefruit Connect LE");
// Neopíxels de configuració
neopixel.begin ();
// Iniciar Bluefruit
Bluefruit.begin ();
Bluefruit.setTxPower (4); // Comproveu els valors admesos de bluefruit.h
Bluefruit.setName ("Bluefruit52");
Bluefruit. Periph.setConnectCallback (connect_callback);
// Per ser coherent, primer s’ha d’afegir DTAU OTA si existeix
bledfu.begin ();
// Configureu i inicieu el servei d'informació del dispositiu
bledis.setManufacturer ("Adafruit Industries");
bledis.setModel ("Bluefruit Feather52");
bledis.begin ();
// Configureu i inicieu el servei BLE UART
bleuart.begin ();
// Configureu i comenceu a anunciar-vos
startAdv ();
}
void startAdv (void)
{
// Paquet publicitari
Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
Bluefruit. Advertising.addTxPower ();
// Inclou uuid bleuart de 128 bits
Bluefruit. Advertising.addService (bleuart);
// Paquet de resposta d'escaneig secundari (opcional)
// Com que no hi ha espai per a "Nom" al paquet de publicitat
Bluefruit. ScanResponse.addName ();
/ * Inicieu la publicitat
* - Activeu la publicitat automàtica si es desconnecta
* - Interval: mode ràpid = 20 ms, mode lent = 152,5 ms
* - El temps d'espera per al mode ràpid és de 30 segons
* - Inici (temps d'espera) amb temps d'espera = 0 s'anunciarà per sempre (fins que estigui connectat)
*
* Per a intervals publicitaris recomanats
*
*/
Bluefruit. Advertising.restartOnDisconnect (cert);
Bluefruit. Advertising.setInterval (32, 244); // en unitat de 0,625 ms
Bluefruit. Advertising.setFastTimeout (30); // nombre de segons en mode ràpid
Bluefruit. Advertising.start (0); // 0 = No deixeu de publicitar després de n segons
}
void connect_callback (uint16_t conn_handle)
{
// Obteniu la referència a la connexió actual
BLEConnection * connection = Bluefruit. Connection (conn_handle);
char central_name [32] = {0};
connexió-> getPeerName (nom_central, mida de (nom_central));
Serial.print ("Connectat a");
Serial.println (nom_central);
Serial.println ("Seleccioneu la pestanya" Neopíxels ", feu clic a" Connecta "i divertiu-vos");
}
bucle buit ()
{
// Echo va rebre dades
if (Bluefruit.connected () && bleuart.notifyEnabled ())
{
int command = bleuart.read ();
commutador (ordre) {
cas "V": {// Obtén la versió
commandVersion ();
trencar;
}
cas "S": {// Configuració de dimensions, components, gambada …
commandSetup ();
trencar;
}
cas "C": {// Esborra amb color
commandClearColor ();
trencar;
}
cas "B": {// Estableix la brillantor
commandSetBrightness ();
trencar;
}
cas "P": {// Estableix el píxel
commandSetPixel ();
trencar;
}
cas "I": {// Rebre imatge nova
commandImage ();
trencar;
}
}
}
}
buid swapBuffers ()
{
uint8_t * base_addr = pixelBuffer;
int pixelIndex = 0;
per a (int j = 0; j <altura; j ++)
{
for (int i = 0; i <width; i ++) {
if (components == 3) {
neopixel.setPixelColor (pixelIndex, neopixel. Color (* base_addr, * (base_addr + 1), * (base_addr + 2)));
}
més {
neopixel.setPixelColor (pixelIndex, neopixel. Color (* base_addr, * (base_addr + 1), * (base_addr + 2), * (base_addr + 3)));
}
add_base + = components;
pixelIndex ++;
}
pixelIndex + = stride - amplada; // Moveu pixelIndex a la fila següent (tingueu en compte el pas)
}
neopixel.show ();
}
void commandVersion () {
Serial.println (F ("Ordre: comprovació de versió"));
sendResponse (NEOPIXEL_VERSION_STRING);
}
void commandSetup () {
Serial.println (F ("Ordre: Configuració"));
ample = bleuart.read ();
altura = bleuart.read ();
stride = bleuart.read ();
componentsValue = bleuart.read ();
is400Hz = bleuart.read ();
neoPixelType pixelType;
pixelType = componentsValue + (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", amplada, alçada);
Serial.printf ("\ tstride:% d / n", stride);
Serial.printf ("\ tpixelType% d / n", pixelType);
Serial.printf ("\ tcomponents:% d / n", components);
if (pixelBuffer! = NULL) {
delete pixelBuffer;
}
uint32_t mida = amplada * alçada;
pixelBuffer = new uint8_t [components * mida];
neopixel.updateLength (mida);
neopixel.updateType (pixelType);
neopixel.setPin (PIN);
// Fet
sendResponse ("D'acord");
}
void commandSetBrightness () {
Serial.println (F ("Ordre: SetBrightness"));
// Valor de lectura
uint8_t brillantor = bleuart.read ();
// Estableix la brillantor
neopixel.setBrillness (brillantor);
// Actualitza els píxels
swapBuffers ();
// Fet
sendResponse ("D'acord");
}
void commandClearColor () {
Serial.println (F ("Ordre: ClearColor"));
// Llegir color
uint8_t color [MAXCOMPONENTS];
per a (int j = 0; j <components;) {
if (bleuart.available ()) {
color [j] = bleuart.read ();
j ++;
}
}
// Estableix tots els leds en color
int size = ample * alçada;
uint8_t * base_addr = pixelBuffer;
for (int i = 0; i <size; i ++) {
per a (int j = 0; j <components; j ++) {
* base_addr = color [j];
add_base ++;
}
}
// Intercanvi de memòries intermèdies
Serial.println (F ("ClearColor completat"));
swapBuffers ();
if (components == 3) {
Serial.printf ("\ tclear (% d,% d,% d) n", color [0], color [1], color [2]);
}
més {
Serial.printf ("\ tclear (% d,% d,% d,% d) n", color [0], color [1], color [2], color [3]);
}
// Fet
sendResponse ("D'acord");
}
void commandSetPixel () {
Serial.println (F ("Ordre: SetPixel"));
// Posició de lectura
uint8_t x = bleuart.read ();
uint8_t y = bleuart.read ();
// Llegir colors
uint32_t pixelOffset = y * ample + x;
uint32_t pixelDataOffset = components pixelOffset *;
uint8_t * base_addr = pixelBuffer + pixelDataOffset;
per a (int j = 0; j <components;) {
if (bleuart.available ()) {
* base_addr = bleuart.read ();
add_base ++;
j ++;
}
}
// Estableix colors
uint32_t neopixelIndex = y * stride + x;
uint8_t * pixelBufferPointer = pixelBuffer + pixelDataOffset;
uint32_t color;
if (components == 3) {
color = neopixel. Color (* pixelBufferPointer, * (pixelBufferPointer + 1), * (pixelBufferPointer + 2));
Serial.printf ("\ tcolor (% d,% d,% d) n", * pixelBufferPointer, * (pixelBufferPointer + 1), * (pixelBufferPointer + 2));
}
més {
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, color);
neopixel.show ();
// Fet
sendResponse ("D'acord");
}
void commandImage () {
Serial.printf ("Ordre: imatge% dx% d,% d,% d / n", amplada, alçada, components, gambada);
// Rebre un nou buffer de píxels
int size = ample * alçada;
uint8_t * base_addr = pixelBuffer;
for (int i = 0; i <size; i ++) {
per a (int j = 0; j <components;) {
if (bleuart.available ()) {
* base_addr = bleuart.read ();
add_base ++;
j ++;
}
}
/*
if (components == 3) {
uint32_t index = i * components;
Serial.printf ("\ tp% d (% d,% d,% d) n", i, pixelBuffer [índex], pixelBuffer [índex + 1], pixelBuffer [índex + 2]);
}
*/
}
// Intercanvi de memòries intermèdies
Serial.println (F ("Imatge rebuda"));
swapBuffers ();
// Fet
sendResponse ("D'acord");
}
void sendResponse (char const * response) {
Serial.printf ("Enviar resposta:% s / n", resposta);
bleuart.write (resposta, strlen (resposta) * sizeof (char));
}
Pas 3: Pas 3: Comprar pantalla de pantalla
Pas 4: Pas 4: estireu-ho tot junt
Recomanat:
Disseny de jocs en Flick en 5 passos: 5 passos
Disseny de jocs en Flick en 5 passos: Flick és una manera molt senzilla de fer un joc, sobretot com un trencaclosques, una novel·la visual o un joc d’aventures
Detecció de cares a Raspberry Pi 4B en 3 passos: 3 passos
Detecció de cares a Raspberry Pi 4B en 3 passos: en aquest manual, farem la detecció de cares a Raspberry Pi 4 amb Shunya O / S mitjançant la biblioteca Shunyaface. Shunyaface és una biblioteca de reconeixement / detecció de cares. El projecte té com a objectiu aconseguir una velocitat de detecció i reconeixement més ràpida amb
Com fer un comptador de passos ?: 3 passos (amb imatges)
Com fer un comptador de passos ?: Jo solia tenir un bon rendiment en molts esports: caminar, córrer, anar en bicicleta, jugar a bàdminton, etc. M’encanta viatjar poc després. Bé, mireu el meu ventre corpulent … Bé, de totes maneres, decideixo tornar a començar a fer exercici. Quin equip he de preparar?
Mummybot Circuits Challenge: 6 passos (amb imatges)
Mummybot Circuits Challenge: a la meva classe d’Introducció a la robòtica hem estat aprenent sobre electricitat i circuits. Per introduir l'activitat vaig fer una presentació de diapositives molt curta (adjunta) que pren el Mummybot de JessyRatFink i afegeix circuits bàsics. Vaig donar als estudiants el repte
Muntatge del clon Arduino de la placa Really Bones Bones (RBBB) - ACTUALITZAT: 16 passos
Muntatge del clon Arduino Really Bare Bones Board (RBBB) - ACTUALITZAT: ACTUALITZACIÓ 16/08/2008: s’han afegit imatges de diferents configuracions de taulers en el darrer pas. El RBBB de Modern Device Company és un petit clon Arduino meravellós. Si teniu un projecte Arduino que requereix una petita petjada o una placa dedicada econòmica, això