Testiamo lo shield espansione FT1089K

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.

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-shield-espansione-ft1089k

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è.

Sketch Programma

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.

Sketch Programma

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.

test-shield-espansione-ft1089k

Sketch programma

//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,

test-shield-espansione-ft1089k

Sketch programma

//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.

 

Sketch Programma

//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);
}