Una volta costruito lo shield realizzato tramite il KIT FT1098K (ora fuori produzione) prodotto dalla Futura Elettronica, la cui descrizione e fasi di costruzione potete trovare nell’articolo Shield espansione FT1089K per Arduino Yún vediamo in questo articolo di effettuare alcuni test di prova.
Alcuni di questi saranno realizzati tramite l’ausilio della piccola demo board fornita con il kit
Altri shield per Arduino potranno essere trovati nell’articolo Raccolta shield commerciali per Arduino.
Indice
Descrizione
Lo shield FT1098K consente di comandare 6 utilizzatori mediante relè ed acquisire lo stato di 6 ingressi analogici e 6 digitali tramite le board Arduino YÚN, Arduino UNO o Arduino MEGA.
Tutti gli ingressi e le uscite digitali dispongono di un LED che ne segnala lo stato.
Ciascuna linea analogica d’ingresso presenta una resistenza in serie e un diodo zener di protezione.
Sui morsetti a vite della scheda sono disponibili tutti i terminali del relè, il terminale centrale C, il terminale normalmente chiuso NC ed il terminale normalmente aperto NO.
Dove trovare lo shield
Sfortunatamente lo shield non viene più prodotto
Le parti che andremo a testare
Per il test dello Shield FT1098K sono previsti alcuni test, alcuni coinvolgono anche l’utilizzo della speciale demo board su cui sono presenti: un LED RGB, un deviatore, un micro pulsante e un trimmer.
Test funzionamento relè
In questo caso il test aziona in modo ciclico i 6 relè presenti sulla scheda, questi sono pilotati tramite le porte digitali: 8, 9. 10, 11, 12, 13 tramite l’integrato U1.
La loro attivazione è segnalata tramite l’accensione del relativo led Rosso collegato in parallelo alla bobina del relè.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
/* Test rele.ino */ void setup() { // Pin uscite rele' pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT); pinMode(13,OUTPUT); } void loop() { digitalWrite(8, HIGH); delay(50); digitalWrite(9, HIGH); delay(50); digitalWrite(10,HIGH); delay(50); digitalWrite(11, HIGH); delay(50); digitalWrite(12, HIGH); delay(50); digitalWrite(13, HIGH); delay(1000); // Un attimo di pausa digitalWrite(8, LOW); delay(50); digitalWrite(9, LOW); delay(50); digitalWrite(10, LOW); delay(50); digitalWrite(11, LOW); delay(50); digitalWrite(12, LOW); delay(50); digitalWrite(13, LOW); delay(50); } |
Test porte IN/OUT
In quarto test sono verificate le porte d’ingresso attivando in sequenza i relativi pin presenti sulle porte.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
// Test IN/OUT void setup() { // Pin ingressi pinMode(7,OUTPUT); pinMode(6,OUTPUT); pinMode(5,OUTPUT); pinMode(4,OUTPUT); pinMode(3,OUTPUT); pinMode(2,OUTPUT); } void loop() { digitalWrite(7, HIGH); delay(50); digitalWrite(6, HIGH); delay(50); digitalWrite(5,HIGH); delay(50); digitalWrite(4, HIGH); delay(50); digitalWrite(3, HIGH); delay(50); digitalWrite(2, HIGH); delay(1000); // Un attimo di pausa digitalWrite(7, LOW); delay(50); digitalWrite(6, LOW); delay(50); digitalWrite(5, LOW); delay(50); digitalWrite(4, LOW); delay(50); digitalWrite(3, LOW); delay(50); digitalWrite(2, LOW); delay(50); } |
Test diodo RGB
In questo caso viene utilizzata la piccola demo board, la cui morsettiera è collegata direttamente a quella dello Shield FT1098K utilizzando lo strip maschio a 16 pin incluso nel kit.
In questo test verificheremo ognuno dei tre led presenti all’interno del LED RGB, di tipo a catodo comune.
Schema equivalente del circuito
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
/* Test_led Programma per il test di accensione singoli led */ //Definizione pin #define LED_RED 3 #define LED_GREEN 5 #define LED_BLUE 6 void setup() { Serial.begin(9600); pinMode(LED_GREEN, OUTPUT); pinMode(LED_BLUE, OUTPUT); pinMode(LED_RED, OUTPUT); } void loop() { digitalWrite(LED_GREEN, LOW); digitalWrite(LED_BLUE, HIGH); delay (1000); digitalWrite(LED_BLUE, LOW); digitalWrite(LED_RED, HIGH); delay (1000); digitalWrite(LED_RED, LOW); digitalWrite(LED_GREEN, HIGH); delay (1000); } |
Test diodo RGB tramite trimmer
In questo test verificheremo una delle caratteristiche del diodo RGB che è l’acronimo di Red, Green, Blue (ovvero Rosso, Verde, Blu). Ogni colore visibile dall’occhio umano è generato dalla miscela di queste tre tinte primarie nelle adeguate proporzioni. Per esempio come visibile nella figura sottostante miscelando opportunamente il colore rosso e il verde si ottiene il colore giallo,
Schema equivalente del circuito
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
/* test_led_RGB Programma per il test di un LED tipo RGB anodo comune */ //Definizione pin #define LED_RED 3 #define LED_GREEN 5 #define LED_BLUE 6 #define POT 5 unsigned long interval = 1000; unsigned long previousMillis = 0; void setup() { Serial.begin(9600); } void loop() { color_wheel(); }// Loop... void RGB_led(int red_led, int green_led, int blue_led) { analogWrite(LED_RED, red_led); analogWrite(LED_GREEN, green_led); analogWrite(LED_BLUE, blue_led); } void color_wheel() { int red_val = 255; int green_val = 0; int blue_val = 0; int offset; int wheel = map(analogRead(POT), 0, 1023, 0, 1535); if ( wheel <= 255 ) //Rosso al max + Verde in crescita green_val = wheel; // ottengo al max il Giallo else if ( wheel <= 511 ) //Verde al max + Rosso in diminuzione { red_val = abs(wheel - 511); //Rosso va da 255 a 0 green_val = 255; //Verde lo tengo al max } else if ( wheel <= 767 ) //Verde al max + Blu in crescita { //(0, 255, 255) = Ciano red_val = 0; green_val = 255; //Verde al max blue_val = wheel - 511; //Blu in crescita da 0 a 255 } else if ( wheel <= 1023 ) //Blu al max + Verde in diminuzione { //(0, 0, 255) = Blu red_val = 0; green_val = abs(wheel - 1023); //Verde in diminuzione da 255 a 0 blue_val = 255; //Blu fisso al max } else if ( wheel <= 1279 ) //Blu al max + Rosso in crescita { //(255, 0, 255) = Magenta red_val = wheel - 1023; //Rosso aumenta da 0 a 255 blue_val = 255; //Blu fisso al max } else { //Rosso al max + Blu in diminuzione blue_val = abs(wheel - 1535); } if (millis() - previousMillis > interval) { previousMillis = millis(); Serial.print("Potenziometro: "); Serial.print(wheel); Serial.print(", Rosso: "); Serial.print(red_val); Serial.print(", Verde: "); Serial.print(green_val); Serial.print(", Blu: "); Serial.println(blue_val); } RGB_led(red_val, green_val, blue_val); } |
Test micro pulsante e deviatore a slitta
In questo test sullo Shield dello FT1098K verificheremo il funzionamento del deviatore a slitta, e micro pulsante.
Nel primo caso attiveremo il relè RL1, mentre premendo il pulsante accenderemo il led rosso presente all’interno del led RGB.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
/* Test_demoboard.ino */ //Definizione pin #define LED_RED 3 #define LED_GREEN 5 #define LED_BLUE 6 #define RELE_1 8 #define DEVIATORE 4 #define PULSANTE 7 void setup() { Serial.begin(9600); pinMode(LED_GREEN, OUTPUT); pinMode(LED_BLUE, OUTPUT); pinMode(LED_RED, OUTPUT); pinMode(RELE_1, OUTPUT); pinMode(PULSANTE, INPUT_PULLUP); pinMode(DEVIATORE, INPUT_PULLUP); } void loop() { int pulsante_stato = digitalRead(PULSANTE); int deviatore_stato = digitalRead(DEVIATORE); Serial.print("Pulsante = "); Serial.println(!pulsante_stato); digitalWrite(LED_RED, !pulsante_stato); Serial.print("Deviatore = "); Serial.println(!deviatore_stato); digitalWrite(RELE_1, !deviatore_stato); delay(100); } |