Errore isr: expected unqualified-id before string constant

Ciao.
Sto lavorando su un lettore di bar code basato sulla lettura di un fotodiodo messo in moto da un motore stepper e stavo facendo delle prove per controllare il funzionamento dell'interrupt.
Ho creato un circuito con uno stepper e un fotodiodo, il cui segnale è aquisito nell'isr sottoforma di voltaggio, in particolare in caso di luce alta il voltaggio è alto e in caso di buio si ha un valore basso. Nel loop ho inserito uno 'switch case': nel caso di default attende la pressione di un pulsante creato su Processing (interfaccia grafica), nel caso start il motore inizia a girare per un tot e se il fotodiodo ha un segnale inferiore ad una soglia si passa al caso lettura in cui semplicemente vorrei verificare che il valore sia stato letto correttamente.
Quando compilo lo sketch mi da l'errore 'expected unqualified-id before string constant' e mi sottolinea la linea di codice 'void ISR(TIMER1_OVF_vect){'.
Sapreste aiutarmi a risolvere il problema?

Vi scrivo il mio codice di seguito.

#include <avr/io.h>
#include <avr/interrupt.h>
#include <Stepper.h>

#define THRESHOLD 2 //V
#define START 1
#define READING 2

int diode = 3;
int PD = 0;
float sensorValue;
volatile float voltage = 0;
unsigned int state = 0;
int static stepMotore = 2068; //step per fare un giro completo
Stepper myStepper(stepMotore, 8, 9, 10, 11);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(diode, OUTPUT);
  digitalWrite(diode, HIGH);
  myStepper.setSpeed(3); // 3 rpm
  TIMSK1 &= ~(1<<TOIE1);  
  TCCR1A &= ~((1<<WGM11) | (1<<WGM10)); 
  TCCR1B &= ~((1<<WGM12) | (1<<WGM13));  
  TIMSK1 &= ~(1<<OCIE1A);  
  TCCR1B |= (1<<CS12); //prescaler 256
  TCCR1B &= ~(1<<CS11);
  TCCR1B &= ~(1<<CS10);              
  TCNT1H = 0xE7;  
  TCNT1L = 0x95;
  TIMSK1 |= (1<<TOIE1);  
}

void loop() {
  // put your main code here, to run repeatedly:
  switch(state){ 
    case START:
    //...// 
    myStepper.step(1150);
    if(voltage < THRESHOLD){
      state = READING;
    }
    break;

    case READING:
      Serial.println("valore letto");
    break;

    default: //WAITING
      if(Serial.available()){
        String command = Serial.readStringUntil('\n');
        if (command == "on"){
          state = START;
        }
      }
}

void ISR(TIMER1_OVF_vect){
  TCNT1H = 0xE7;  
  TCNT1L = 0x95;
  
  //lettura fotodiodo
  sensorValue = analogRead(PD);
  voltage = (sensorValue/1024.0)*5;
  //Serial.println(String(voltage,2)+"V"); //avoid serial monitor during interrupt
}

Buonasera,

prima di tutto ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato, dopo di che ...

... essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il succitato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nel rispetto del suddetto regolamento nessuno ti risponderà (eventuali risposte verrebbero temporaneamente nascoste), quindi ti consiglio di farla al più presto. :wink:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.