Sommario:

Semplice sensore di colore fai-da-te di Magicbit: 5 passaggi
Semplice sensore di colore fai-da-te di Magicbit: 5 passaggi

Video: Semplice sensore di colore fai-da-te di Magicbit: 5 passaggi

Video: Semplice sensore di colore fai-da-te di Magicbit: 5 passaggi
Video: How To Make DIY Weather Station With ESP32 | DIY Weather Station| Hammad weather station | @NASA 2024, Dicembre
Anonim
Image
Image

In questo tutorial impareremo come realizzare un semplice sensore di colore usando Magicbit con Arduino.

Forniture

  • Magicbit
  • Cavo da USB-A a Micro-USB

Fase 1: Storia

Configurazione hardware
Configurazione hardware

Ciao ragazzi, a volte bisogna usare i sensori di colore per alcuni scopi. Ma forse non sai come funzionano. Quindi in questo tutorial imparerai come realizzare un semplice sensore di colore fai-da-te usando Magicbit con Arduino. Iniziamo.

Fase 2: Teoria e Metodologia

In questo progetto ci aspettiamo di insegnarti a costruire un sensore di colore in grado di rilevare i colori rosso, verde e blu. Questo è un esempio molto semplice. Quindi come farlo. A questo scopo utilizziamo il modulo RGB del Magicbit e l'LDR integrato. Prima di tutto devi imparare un po' di teoria. Si tratta della quantità di riflessione della luce. Ora ti faccio una domanda. Quale superficie colorata che riflette maggiormente la luce di colore rosso? anche quali superfici che riflettono maggiormente le luci verdi e blu. Pensa un po'. Ma la risposta è semplice. La superficie di colore rosso riflette principalmente la luce di colore rosso. Anche le superfici verdi e blu rifletteranno le luci verdi e blu. Quindi in questo progetto usiamo quella teoria. Per riconoscere il colore emettiamo luci rosse, verdi e blu una per una. Ogni volta che misuriamo la quantità di riflessione utilizzando il valore LDR. Se una certa luce darà più riflessione rispetto ad altre due luci, allora quella superficie dovrebbe essere per lo più una superficie colorata riflessa.

Passaggio 3: configurazione hardware

Questo molto semplice. Collega il tuo modulo RGB alla porta in alto a destra di Magicbit. Questo modulo ha LED Neopixel WS2812B. Questo LED ha 4 pin. Due per alimentazione e due per ingresso e uscita dati. Poiché utilizziamo un led, abbiamo solo bisogno di pin di alimentazione e dati nel pin. Se non hai quel modulo puoi acquistare un modulo Neopixel. Se hai acquistato quel tipo di modulo devi collegare pin di alimentazione e dati in pin a Magicbit. È molto facile. Collegare VCC e GND del Magicbit ai pin di alimentazione del modulo RGB e il pin D33 al pin dati.

Passaggio 4: configurazione del software

La maggior parte fatta dalla programmazione. Usiamo Arduino IDE per programmare il nostro Magicbit. Nel codice usiamo un paio di librerie. Sono libreria Adafruit Neopixel per il controllo Neopixel LED e libreria Adafruit OLED per gestire OLED. Nel setup configuriamo i nostri ingressi e uscite. Configura anche il display OLED integrato su Magicbit. Nel loop controlliamo che il pulsante sinistro sia premuto o meno del Magicbit. Se premuto, il segnale in ingresso è 0. Perché è già stato tirato su dalla scheda. Se premuto, eseguiamo il controllo del colore. In caso contrario, lo schermo visualizzerà la dichiarazione "nessun colore". Quando si preme il pulsante, si accendono automaticamente le luci rossa, verde e blu una per una e si memorizza la quantità di riflessione dei colori in tre variabili. Successivamente abbiamo confrontato questi valori e selezionato il colore del valore massimo da visualizzare come colore di output.

Quindi collega il cavo micro USB a Magicbit e seleziona correttamente il tipo di scheda e le porte com. Ora carica il codice. Allora è il momento di testare il nostro sensore. Per verificarlo, mantieni la parte superiore del foglio o della carta con superficie rossa, verde o blu sul modulo LDR e RGB e premi il pulsante sinistro. Quindi il display OLED mostrerà il colore della superficie. Se ciò è sbagliato, il motivo è che alcuni colori hanno un'elevata intensità della luce. Ad esempio in ogni superficie verde l'output è rosso, quindi devi ridurre la luminosità della luce rossa di una certa quantità. Perché la luce rossa ha una luminosità molto alta in quel caso. Quindi ha un'alta riflessione. Se non sai come controllare la luminosità, fai riferimento al tutorial nel link sottostante.

magicbit-arduino.readthedocs.io/en/latest/

In questo link puoi trovare come controllare quel modulo RGB da Magicbit. E puoi anche scoprire come lavorare con LDR e premere il pulsante usando Magicbit. Leggi quel documento e studia ulteriormente come migliorare il sensore di colore. Perché questo è un esempio molto semplice di come funzionano i sensori di colore. La maggior parte dei sensori di colore funziona in questo modo. Quindi cerca di migliorarlo rimuovendo il rumore della luce ambientale e altri rumori.

Passaggio 5: codice Arduino del sensore di colore

#includere

#define LED_PIN 33

#define LED_COUNT 1 LED Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); #include #include #include #define OLED_RESET 4 Adafruit_SSD1306 display(128, 64); #define LDR 36 #define Button 35 int R_value, G_value, B_value; void setup() { LED.begin(); LED.mostra(); pinMode(LDR, INGRESSO); pinMode(Pulsante, INGRESSO); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.display(); ritardo(1000); display.clearDisplay(); Serial.begin(9600); } void loop() { if(digitalRead(Button)==0){// se viene premuto il pulsante LED.setPixelColor(0, LED. Color(0, 50, 0)); //acceso il LED rosso.show(); ritardo(100); R_value=analogRead(LDR);//ottieni LED.setPixelColor(0, LED. Color(150, 0, 0));//su greencolour LED.show(); ritardo(100); G_value=analogRead(LDR);//ottieni il montaggio verde LED.setPixelColor(0, LED. Color(0, 0, 255)); //acceso LED di colore blu.show(); ritardo(100); B_value=analogRead(LDR);//ottieni blue mount if (R_value>G_value && R_value>B_value){//red è più riflesso Display("RED", 3); } else if (valore_G>valore_R && valore_G>valore_B){//il verde è più riflesso Display("VERDE", 3); } else if (valore_B>valore_R && valore_B>valore_G){//il blu è più riflesso Display("BLUE", 3); } Serial.print("ROSSO="); Serial.print(R_value); Serial.print(" VERDE="); Serial.print(G_value); Serial.print(" BLU="); Serial.println(B_value); } else{ LED.setPixelColor(0, LED. Color(0, 0, 0)); //spento RGB LED.show(); Display("NESSUN COLORE", 2); } } void Display(String commond, int size) { // visualizza i dati display.clearDisplay(); display.setTextSize(dimensione); // Normale scala 1:1 pixel display.setTextColor(WHITE); // Disegna testo bianco display.setCursor(0, 20); // Inizia dall'angolo in alto a sinistra display.println(commond); display.display(); }

Consigliato: