+ Rispondi
Risultati da 1 a 4 su 4

Discussione: arduino.

  1. #1
    TecnicoERMETICO riciclato
    Iscritto dal
    03/12/2011
    LocalitÓ
    Monopoli
    Messaggi
    6,710

    arduino.

    Buonasera a tutti.
    Una domanda.
    Mi hanno commissionato un cronometro balistico, in pratica un cronometro in microsecondi con tempo max di 3 secondi.

    Avevo trovato uno sketch che gira, ho spostato la visualizzazione da seriale a lcd.
    Va bene, quindi posso ritenermi soddisfatto.
    Tuttavia volevo aggiungere all'avvio del coso un po di minchierie sul display, per un pizzico di orgoglio.
    La domanda Ŕ, dove lo scrivo per avere la certezza di non interferire con le misure?
    Di certo fuori da "loop". ma non saprei dove.
    Allego il listato.
    codice:
     
    
    /*
    Connessioni display:
     * LCD RS 4 pin to digital pin 12
     * LCD Enable 6 pin to digital pin 11
     * LCD D4 pin to digital pin 10
     * LCD D5 pin to digital pin 9
     * LCD D6 pin to digital pin 8
     * LCD D7 pin to digital pin 7
     * LCD R/W 5 pin to ground
     * 10K resistor:
     * ends to +5V and ground
     * wiper to LCD VO pin (pin 3)
    */
    
    
    #include <LiquidCrystal.h>
    LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
    
    
    #define MAXTIME 3000000UL
    
    
    volatile unsigned long t1, t2;
    unsigned long deltaT;
    
    
    // INT0 ISR
    void ISR0(void) {
       t1 = micros();
       EIMSK &= ~(bit(INT0));
    }
    
    
    // INT1 ISR
    void ISR1(void) {
       t2 = micros();
       EIMSK &= ~(bit(INT1));
    }
    
    
    void clearAndEnable(void) {
       t1 = 0;
       t2 = 0;
       delay(500);
       EIFR |= bit(INTF0);
       EIFR |= bit(INTF1);
       EIMSK |= bit(INT0);
       EIMSK |= bit(INT1);
    }
    
    
    void setup() {
       t1 = 0;
       t2 = 0;
       //Serial.begin(9600);
       lcd.begin(20, 4);
       //
       lcd .println("Pronto alla lettura ");
       pinMode(2, INPUT_PULLUP);
       pinMode(3, INPUT_PULLUP);
       //
       EIFR |= bit(INTF0);
       EIFR |= bit(INTF1);
       //
       attachInterrupt(digitalPinToInterrupt(2), ISR0, FALLING);
       attachInterrupt(digitalPinToInterrupt(3), ISR1, FALLING);
    }
    
    
    void loop() {
       if ((t1 == 0) && (t2 != 0)) {
          lcd.setCursor (0,0);
          lcd.println("Errore di START");
          clearAndEnable();
       }
       else if ((t1 != 0) && ((micros() - t1) > MAXTIME)) {
          lcd.setCursor (0,0);
          lcd.println("Errore di STOP");
          clearAndEnable();
       }
       else if ((t1 != 0) && (t2 != 0)) {
          deltaT = t2 - t1;
          lcd.setCursor (1,1);
          lcd.print(" T=: ");
          lcd.print(deltaT);
          lcd.println(" Ásec  ");
          clearAndEnable();
       }
    }
    How much is a life worth? By law,a bank guard can carry a gun to protect his employer's money.
    But a parent here can't be legally armed to protect her children outside of home. [cit]


  2. #2

    Iscritto dal
    04/09/2011
    Messaggi
    5,373
    non sono molto esperto di arduino, ma da un rapido occhio la struttura di programma sembra fatta da un setup e un loop

    prova prima della scritta "pronto alla lettura"
    immagino dovrai usare qualche delay(xxxx) per un minimo di temporizzazione

  3. #3

    Iscritto dal
    13/12/2011
    LocalitÓ
    Salento!
    Messaggi
    6,761
    dopo il print
    lcd .println("Pronto alla lettura ");

    non dovresti interferire. Ovviamente in quel momento stai assumendo il "controllo" pre misure. Quindi il tuo preambolo, ritarderÓ inizio misurazioni.

  4. #4
    TecnicoERMETICO riciclato
    Iscritto dal
    03/12/2011
    LocalitÓ
    Monopoli
    Messaggi
    6,710
    Il ritardo alle misurazioni non Ŕ un problema, considera che Ŕ un banco prova per cartucce da caccia cal 12.
    Accendi il coso e finchŔ apri la culatta, metti la cartuccia e armi il percussore..... ti sei fumato una sigaretta. Non Ŕ aprire un fucile normale, la culatta o otturatore Ŕ a vite.
    Poi controlli gli altri strumenti... misuratore pressione e velocitÓ proiettile... quando Ŕ tutto pronto puoi sparare.
    Grazie per le informazioni.
    How much is a life worth? By law,a bank guard can carry a gun to protect his employer's money.
    But a parent here can't be legally armed to protect her children outside of home. [cit]



 

Autorizzazioni

  • Non puoi iniziare nuove discussioni
  • Non puoi rispondere alle discussioni
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
Powered by vBulletin™ Version 4.1.5
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved
SEO by vBSEO ©2011, Crawlability, Inc.
Fuso orario: UTC +1, sono le 17:46.