Danger Shield test components

Ciao a tutti ho scitto una sketch per i posessori di danger shield utile per verificare il corretto funzionamento dei componenti.

questo è il codice… attendo commenti o appunti :slight_smile:

/* 
29/12/2010
project: Sketch per testare il corretto funzionamento della DANGER SHIELD 
by: dejan21
note: non necessita di librerie aggiuntive
*/

// VARIABILI UTILIZZATE
int val = 0;
int state = 0;
int state3 = 0;
int x = 0;
int i = 0;
int statenew = 0;
int stateold = 0;
const byte numeri[10] = {
  B00111111, //0
  B00000110, //1
  B01011011, //2
  B01001111, //3
  B01100110, //4
  B01101101, //5 
  B01111101, //6
  B00000111, //7
  B01111111, //8
  B01101111  //9
};
//PIN DIGITALI BOTTONI
#define BUTTON1_PIN 2
#define BUTTON2_PIN 7
#define BUTTON3_PIN 4
//SLIDERS ANALOGICHE
#define SLIDER1_PIN 0
#define SLIDER2_PIN 1
#define SLIDER3_PIN 2
//SENSORI
#define LIGHT_SENSOR_PIN 3
#define TEMP_SENSOR_PIN 4
#define KNOCK_SENSOR_PIN 5
//LED E BUZZER
#define LED1_PIN 6
#define LED2_PIN 5
#define BUZZER_PIN 3
#define SLIDER1_LED_PIN 11
#define SLIDER2_LED_PIN 10
#define SLIDER3_LED_PIN 9
//PIN
#define LATCH_PIN 8
#define CLOCK_PIN 12
#define DATA_PIN 13
//LEGENDA TEST
#define TESTSLIDER 1
#define TESTBUZZER 2
#define TESTKNOCK  3
#define TESTSENSORETEMPERATURA  4
#define TESTSENSORELUMINOSITA 5
#define TESTBOTTONE3 6
#define TESTDISPLAY 7


void setup()
{
  Serial.begin(9600);
  digitalRead(BUTTON1_PIN);
  digitalRead(BUTTON3_PIN);
  digitalRead(BUTTON2_PIN);
  digitalWrite(LED1_PIN,HIGH);
  digitalWrite(LED2_PIN,HIGH);
  
  analogRead(SLIDER1_PIN);
  analogRead(SLIDER2_PIN);
  analogRead(SLIDER3_PIN);
  analogWrite(SLIDER1_LED_PIN,HIGH);
  analogWrite(SLIDER2_LED_PIN,HIGH);
  analogWrite(SLIDER3_LED_PIN,HIGH);
 
  pinMode(BUZZER_PIN, OUTPUT);
  pinMode(LED1_PIN, OUTPUT);
  pinMode(LED2_PIN, OUTPUT);
  pinMode(LATCH_PIN, OUTPUT);
  pinMode(CLOCK_PIN, OUTPUT);
  pinMode(DATA_PIN,OUTPUT);
  
  Serial.println("TEST COMPONENTI DANGER SHIELD");
  Serial.println("PREMI IL BUTTON1 PER SCORRERE I TEST");
  Serial.println("PREMI IL BUTTON2 PER AVVIARE IL TEST SELEZIONATO");
  Serial.println("PREMI IL RESET BUTTON PER RIAVVIARE IL TEST COMPONENTI");
  Serial.println("TEST 1 = SLIDERS ANALOGICHE ");
  Serial.println("TEST 2 = BUZZER ");
  Serial.println("TEST 3 = SENSORE KNOCK ");
  Serial.println("TEST 4 = SENSORE TEMPERATURA ");
  Serial.println("TEST 5 = FOTOSENSORE ");
  Serial.println("TEST 6 = BOTTONE3 ");
  Serial.println("TEST 7 = DISPLAY 7 SEGMENTI ");
  Serial.println("Il test positivo del componente verra' segnalato con la dicitura   ESITO TEST = OK");  
  Serial.println(""); 
  Serial.println("test LED1 e LED2 preventivo..."); 
  delay(2000);
  Serial.println("attendere");
  delay(3000);
  Serial.println("Ora i LED lampeggiano ad intermittenza");
  delay(1000);
  for (int contatore = 0; contatore < 15; contatore++) 
         {
          digitalWrite(LED1_PIN,HIGH);
          delay(100);
          digitalWrite(LED1_PIN,LOW);
          delay(100);
          digitalWrite(LED2_PIN,HIGH);
          delay(100);
          digitalWrite(LED2_PIN,LOW);
          delay(100);
          }
  Serial.println("Se i Led lampeggiano ad intermittenza la DANGER SHIELD e' pronta per i TEST");
  Serial.println("Premere BUTTON1 per selezionare il TEST desiderato");
}


void loop()
{ 
  
  int stato1 = digitalRead(BUTTON1_PIN);
  if(stato1==1)
  {
    delay(1000);
    statenew ++;
    if (statenew > stateold)
    {
      byte j = numeri[statenew];
      digitalWrite(LATCH_PIN, LOW);
      shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, j);
      digitalWrite(LATCH_PIN, HIGH);
      Serial.println("");
      Serial.print("TEST "); 
      Serial.print(statenew);
      Serial.print(": premere il BUTTON2 per avviare questo TEST");
        
      stateold = statenew;
      if (statenew == 7)
      {
        statenew=0;
        stateold=0;
      } 
    }
  }

  int stato2 = digitalRead(BUTTON2_PIN);

  if(stato2==1)
  {
    delay(500);
    if (statenew == 0)
    { 
      statenew = 7;
    }
    Serial.println("");
    Serial.print("AVVIO TEST ");
    Serial.println(statenew);
    Serial.println("attendere...");
    byte j = numeri[0];
      digitalWrite(LATCH_PIN, LOW);
      shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, j);
      digitalWrite(LATCH_PIN, HIGH);
    delay(2000);

    //TEST DELLE SLIDER ANALOGICHE
    if(statenew == TESTSLIDER)
    {
      delay (1000);
      Serial.println("TEST SLIDERS ANALOGICI: ");
      val = analogRead(SLIDER1_LED_PIN);
       Serial.println("ESITO TEST = OK se si visualizzano i valori analogici delle tre SLIDERS e i LED lampeggiano");
      Serial.print("slider1 = ");
      Serial.println(val);
      val = analogRead(SLIDER2_LED_PIN);
      Serial.print("slider2 = ");
      Serial.println(val);
      val = analogRead(SLIDER3_LED_PIN);
      Serial.print("slider3 = ");
      Serial.println(val);
       for (int contatore = 0; contatore < 15; contatore++) 
        {
          analogWrite(SLIDER1_LED_PIN,LOW);
          delay (100);
          analogWrite(SLIDER2_LED_PIN,LOW);
          delay(100);
          analogWrite(SLIDER3_LED_PIN,LOW);
          delay(100);
          analogWrite(SLIDER1_LED_PIN,HIGH);
          delay (100);
          analogWrite(SLIDER2_LED_PIN,HIGH);
          delay(100);
          analogWrite(SLIDER3_LED_PIN,HIGH);
          delay(100);
        }
     
    }



    //TEST BUZZER
    if(statenew == TESTBUZZER) 
    {
      Serial.println("TEST BUZZER");
      for(int x = 0; x < 5; x++)
      {
        digitalWrite(BUZZER_PIN, HIGH);
        delay(100);
        digitalWrite(BUZZER_PIN, LOW);
        delay(100);
      }
      Serial.println("ESITO TEST = OK se il buzzer emette bip ad intermittenza");
    }




    //TEST KNOCK
    if(statenew == TESTKNOCK) 
    {
      Serial.println("TEST KNOCK"); 
      val = analogRead(KNOCK_SENSOR_PIN);
      if(val > 10)
      delay(1550);
        {
        Serial.println("ESITO TEST = OK se il LED1 lampeggia");  
        digitalWrite(LED2_PIN,LOW);
        for (int contatore = 0; contatore < 30; contatore++) 
        {
          digitalWrite(LED1_PIN,HIGH);
          delay (100);
          digitalWrite(LED1_PIN,LOW);
          delay(100);
      
        }
        
      }
      
      
    }





    //TEST SENSORE TEMPERATURA
    if(statenew == TESTSENSORETEMPERATURA) 
    {
      Serial.println("TEST SENSORE TEMPERATURA"); 
      val = analogRead(TEMP_SENSOR_PIN);
      Serial.print("Temperatura: ");
      Serial.println(val);
      Serial.println("ESITO TEST = OK se si visualizza un valore di temperatura");
    }



    //TEST SENSORE LUMINOSITA'
    if(statenew == TESTSENSORELUMINOSITA) 
    {
      Serial.println("TEST FOTOSENSORE");
      val = analogRead(LIGHT_SENSOR_PIN);
      Serial.print("Livello Luce: ");
      Serial.println(val);
      Serial.println("ESITO TEST = OK se si visualizza un valore di luminosita'");
    }




    //TEST BOTTONE3
    if(statenew == TESTBOTTONE3) 
    {  
      Serial.println("TEST BUTTON 3");
      Serial.println("Premi e tieni premuto il BUTTON3 entro 5 secondi");

      delay (5000);
      state3 = digitalRead(BUTTON3_PIN);
      if (state3 == 1)
      {
        Serial.println("ESITO TEST = OK se LED1 e LED2 lampeggiano");
        for (int contatore2 = 0; contatore2 < 10; contatore2++) 
        {
          digitalWrite(LED1_PIN,HIGH);
          delay (100);
          digitalWrite(LED2_PIN,HIGH);
          delay(100);  
          digitalWrite(LED1_PIN,LOW);
          delay (100);
          digitalWrite(LED2_PIN,LOW);
          delay(100);
        }
      }
      else
      {
        Serial.println("Button 3 non rilevato o non premuto entro i 5 secondi");

      }

    }



    //TEST DISPLAY 7 SEGMENTI
    if(statenew == TESTDISPLAY) 
    {
      i = 0;
      Serial.println("TEST DISPLAY");
      for (int i=10; i>-1; i--)
      {
        byte j = numeri[i];
        digitalWrite(LATCH_PIN, LOW);
        shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, j);
        digitalWrite(LATCH_PIN, HIGH);
        delay(500);
      }
      Serial.println("ESITO TEST = OK se si visualizza countdown sul DISPLAY");
    }

    statenew=0;
    stateold=0;

  }

}