Controller midi fotoresistenze funziona a metà

Ciao a tutti, sto creando un controller midi con due fotoresistenze, il problema è che ne funziona solo una e non riesco a capire dove sbaglio.

ecco il codice:

byte noteON = 144;//note on command
byte noteON2 = 100;//
int analogPin = A0;
int analogPin2 = A2;

void setup() {
  Serial.begin(9600);
}

void loop() {
  
  int analogVal = analogRead(analogPin);//read data
  
  //we have to scale the lsr data to fit between 0 and 127 (this is the range of MIDI notes)
  byte note = map(analogVal, 0, 900, 0, 127);//use the 0-900 range I measured
  
  MIDImessage(noteON, note, 100);//turn note on
  delay(300);//hold note for 300ms
  MIDImessage(noteON, note, 0);//turn note off (note on with velocity 0)
  delay(200);//wait 200ms until triggering next note
  
   int analogVal2 = analogRead(analogPin2);
   
    byte note2 = map(analogVal2, 0, 900, 0, 127);
    
     MIDImessage(noteON2, note2, 100);
     delay(300);
      MIDImessage(noteON2, note2, 0);//turn note off (note on with velocity 0)
  delay(200);
   
   
   
}

//send MIDI message
void MIDImessage(byte command, byte data1, byte data2) {
  Serial.write(command);
  Serial.write(data1);
  Serial.write(data2);
}

Nella foto in allegato si vede il mio progetto e funziona solo la resistenza a sinistra quella con il collegamento analogico 0

Grazie mille a tutti

Non riesco a capire se è sbagliato il codice o l'hardware il secondo sensore è collegato nello stesso modo solo che nella porta seriale 2

Guardati bene il circuito sulla breadbord.
Il sensore alla sinistra lo hai collegato tra +5V e massa (cerchio blu) mentre quello alla destra (cerchiato di rosso) l' hai collegato 2 volte alla massa.

Ciao Uwe

Grazie mille, proprio un errore da pivello. ora funziona ma se lo collego a garageband ad esempio mi fa solo note acute sia in un sensore che nell'altro e non riesco a capire perché.
Grazie mille.

Guarda con seriel print che valori leggi sulle fotoresistenze e adegua la riga:

byte note = map(analogVal, 0, 900, 0, 127); //use the 0-900 range I measured
e
byte note2 = map(analogVal2, 0, 900, 0, 127);

Ciao Uwe

bocinci:
Grazie mille, proprio un errore da pivello. ora funziona ma se lo collego a garageband ad esempio mi fa solo note acute sia in un sensore che nell'altro e non riesco a capire perché.
Grazie mille.

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Grazie mille per la risposta, scusa se mi sono presentato in ritardo ho provveduto subito a farlo.

Ho un'altro problema, ho aggiunto un potenziometro che suona anche lui, il problema è che se il codice lo uso solo esclusivamente per il potenziometro funziona, se invece metto tutto insieme funzionano solo i sensori e non quello. Volevo sapere se sapete dirmi il motivo e soprattutto se è possibile fare in modo che ogni sensore sia uno strumento diverso su Logic.
Grazie mille spero possiate aiutarmi perché è un progetto molto importante.
Scusatemi se sbaglio a fare qualcosa nel forum.

 byte noteON = 144;//note on command
byte noteON2 = 144;//
int analogPin = A0;
int analogPin2 = A2;
byte noteON3 = 144;//note on command
int potPin = A1;
void setup() {
  Serial.begin(9600);
}

void loop() {
  
  int analogVal = analogRead(analogPin);//read data
  
  //we have to scale the lsr data to fit between 0 and 127 (this is the range of MIDI notes)
  byte note = map(analogVal, 0, 700, 0, 127);//use the 0-900 range I measured
  
  MIDImessage(noteON, note, 100);//turn note on
  delay(300);//hold note for 300ms
  MIDImessage(noteON, note, 0);//turn note off (note on with velocity 0)
  delay(200);//wait 200ms until triggering next note
  
   int analogVal2 = analogRead(analogPin2);
   
    byte note2 = map(analogVal2, 0, 700, 0, 127);
    
     MIDImessage(noteON2, note2, 100);
     delay(300);
      MIDImessage(noteON2, note2, 0);//turn note off (note on with velocity 0)
  delay(200);
  
  
  
   int potVal = analogRead(potPin);//read data from potentiometer
  
  //we have to scale the potentiometer data to fit between 0 and 127 (this is the range of MIDI notes)
  byte note3 = map(potVal, 0, 1023, 0, 127);
  
  MIDImessage(noteON3, note, 100);//turn note on
  delay(0);//hold note for 300ms
 
   
   
   
}

//send MIDI message
void MIDImessage(byte command, byte data1, byte data2) {
  Serial.write(command);
  Serial.write(data1);
  Serial.write(data2);
}

Non conosco il MIDI, ma mi vien da dire che c'è differenza fra questo

   int analogVal2 = analogRead(analogPin2);
   
    byte note2 = map(analogVal2, 0, 700, 0, 127);
    
     MIDImessage(noteON2, note2, 100);
     delay(300);
      MIDImessage(noteON2, note2, 0);//turn note off (note on with velocity 0)
  delay(200);

e questo:

   int potVal = analogRead(potPin);//read data from potentiometer
  
  //we have to scale the potentiometer data to fit between 0 and 127 (this is the range of MIDI notes)
  byte note3 = map(potVal, 0, 1023, 0, 127);
  
  MIDImessage(noteON3, note, 100);//turn note on
  delay(0);//hold note for 300ms

Dal lato logic, credo che ogni sensore non possa essere uno stumento diverso.
Il SW sul computer dovrebbe identificare il singolo strumento tramite ogni singola MIDI che ad esso è collegata.

Per avere note differenti puoi agire sulle funzioni map dei singoli sensori.
Sapendo che MIDI accetta un range 0-127, mi viene da presupporre che se al primo sensore lo mappi fra 85-127 faccia solo note acute, il secondo fra 43-85 faccia i medi, ed il potenziometro 0-43 fai i bassi.

Grazie mille!! =)

Scusate di nuovo, volevo chiedere una cosa, come posso far durare di più una nota? perché note cambiano in continuazione. Mi piacerebbe che la nota che mi crea il potenziometro rimanga "premuta" fino a quando non sono io a cambiare.
Grazie mille

Credo che debba trovare il modo di modificare quel delay(300) dopo MIDImessage(noteON3, note, 100)

quel delay è quello che passa tra una nota e l'altra ho provato ma se metto 3 secondi ad esempio passano 3 secondi dalla nota successiva ma non rimane suonata