qualcosa di sbagliato nel ciclo if?

#include <Brain.h>

// Set up the brain reader, pass it the hardware serial object you want to listen on.
Brain brain(Serial);

const int ledPin = 13; // 13 is handy because it’s on the board.
long interval = 500; // Changes based on attention value.
long previousMillis = 0;
int ledState = LOW;

unsigned int Delta;
unsigned int Theta;
unsigned int LowAlpha;
unsigned int HighAlpha;
unsigned int LowBeta; //Umberto
const int ledPin12 = 12;
const int ledPin10 = 10;
const int ledPin8 = 8;
const int ledPin6 = 6;
const int ledPin4 = 4; //Umberto: mettici al posto di XXX il numero di pin giusto

void setup() {
// Set up the LED pin.
pinMode(ledPin, OUTPUT);

// Start the hardware serial.
Serial.begin(9600);
}

void loop() {
// Expect packets about once per second.
if (brain.update()) {
Serial.println(brain.readCSV());

// Attention runs from 0 to 100.
interval = (100 - brain.readAttention()) * 10;
}

// Make sure we have a signal.
if(brain.readSignalQuality() == 0) {

// Blink the LED.
if (millis() - previousMillis > interval) {
// Save the last time you blinked the LED.
previousMillis = millis();

// If the LED is off turn it on and vice-versa:
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;

// Set the LED with the ledState of the variable:
digitalWrite(ledPin, ledState);

// - Inizio
** Delta=brain.readDelta();**
** if (Delta >= 0 && Delta < 1000000000)**
** digitalWrite(ledPin12, HIGH);**
** else**
** digitalWrite(ledPin12, LOW); **

** Theta=brain.readTheta();**
** if (Theta > 0 && Theta < 10000000)**
** digitalWrite(ledPin10, HIGH);**
** else**
** digitalWrite(ledPin10, LOW);**

** LowAlpha=brain.readLowAlpha();**
** if (LowAlpha > 0 && LowAlpha < 100000000)**
** digitalWrite(ledPin8, HIGH);**
** else**
** digitalWrite(ledPin8, LOW);**

** HighAlpha=brain.readHighAlpha();**
** if (HighAlpha > 0 && HighAlpha < 10000000)**
** digitalWrite(ledPin8, HIGH);**
** else**
** digitalWrite(ledPin8, LOW);**

** LowBeta=brain.readLowBeta();**
** if (LowBeta > 0 && LowBeta < 100000000)**
** digitalWrite(ledPin8, HIGH);**
** else**
** digitalWrite(ledPin8, LOW);**
** //…**

** // Fine**

}
else {
digitalWrite(ledPin, LOW);
}

}

ciao sotto questo programma non mi accende i led… ma dovrebbe accenderli a qualsiasi numero venga dovrebbero tare sempre accesi. perchèp non si accendono? ho azzeccato a scrivere il ciclo if?

grazie

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare. Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso. Infatti ad un certo punto il tuo codice è grassetto !!!

  1. E dei vari pin, dove stà la pinMode ad OUTPUT ? Ne fai solo 1 per pinLed, e gli altri ?
  2. Come fai a confrontare una variabile Delta che è unsigned int quindi al max.65535 con 1000000000 ? La costante 1000000000 è un long (che accetta fino a 4 miliardi) e si DEVE scrivere con la L finale, 1000000000L e se la vuoi senza segno usi UL -> 1000000000UL

in grassetto l’ho messo io per vedidenziare dove penso sia l’errore…
scusa nona avevo visto al sezione 7 in realtà non mi da errore. ma non accende i led

quindi è un output . cosa drei quindi inserire? non è già nell’if output?

#include <Brain.h>

// Set up the brain reader, pass it the hardware serial object you want to listen on.
Brain brain(Serial);

Questo è un pezzo racchiuso nei tag code, regolamento sezione 7 spiega come fare

Fai ad esempio digitalWrite(ledPin10, HIGH); e non dichiari nella setup() pinMode(ledPin10,OUTPUT);

per avere quando la variabile più alta uso ul finale?

ok più o meno credo dia ver capito. ma se mi servono valori più alti come 232000 e simili come faccio?

No, dipende tutto da Delta=brain.readDelta(); Che tipo di valori ritorna readDelta() ? Se ti ritorna al massimo valori unsigned int, vuol dire che al massimo ti può rispondere con valori 0-65535 La libreria è questa? https://github.com/kitschpatrol/Brain Se si, la readDelta() ritorna un unsigned a 32 bit ovvero un unsigned long, quindi la variabile Delta DEVE essere dichiarata unsigned long e NON unsigned int Una unsigned long accetta da 0 a 4294967296 ovvero 2 elevato 32

E probabilmente anche Theta, LowAlpha, HighAlpha, LowBeta devono essere unsigned long. Se guardi dentro a Brain.h vedrai: uint32_t readTheta(); Ovvero quella funzione ritorna un valore a 32 bit senza segno quindi un unsigned long. Le variabili che usi per leggerne il valore devono essere adeguatamente grandi. Theta deve essere unsigned long, come unsigned int non basta.

si grazie mille è proprio quella che uso!!!

ma alla fine dei valori quindi nel ciclo if devo comunque mettere l o ul o no?

#include <Brain.h>

// Set up the brain reader, pass it the hardware serial object you want to listen on.
Brain brain(Serial);

const int ledPin = 13; // 13 is handy because it’s on the board.
long interval = 500; // Changes based on attention value.
long previousMillis = 0;
int ledState = LOW;

unsigned long Delta;
unsigned long Theta;
unsigned long LowAlpha;
unsigned long HighAlpha;
unsigned long LowBeta; //Umberto
const int ledPin12 = 12;
const int ledPin10 = 10;
const int ledPin8 = 8;
const int ledPin6 = 6;
const int ledPin4 = 4; //Umberto: mettici al posto di XXX il numero di pin giusto

void setup() {
// Set up the LED pin.
pinMode(ledPin, OUTPUT);
pinMode(ledPin12, OUTPUT);
pinMode(ledPin10, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin6, OUTPUT);

// Start the hardware serial.
Serial.begin(9600);
}

void loop() {
// Expect packets about once per second.
if (brain.update()) {
Serial.println(brain.readCSV());

// Attention runs from 0 to 100.
interval = (100 - brain.readAttention()) * 10;
}

// Make sure we have a signal.
if(brain.readSignalQuality() == 0) {

// Blink the LED.
if (millis() - previousMillis > interval) {
// Save the last time you blinked the LED.
previousMillis = millis();

// If the LED is off turn it on and vice-versa:
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;

// Set the LED with the ledState of the variable:
digitalWrite(ledPin, ledState);

// Umberto - Inizio
Delta=brain.readDelta();
if (Delta > 550000UL && Delta < 1000000UL)
digitalWrite(ledPin12, HIGH);
else
digitalWrite(ledPin12, LOW);

Theta=brain.readTheta();
if (Theta > 300000UL && Theta < 550000UL)
digitalWrite(ledPin10, HIGH);
else
digitalWrite(ledPin10, LOW);

LowAlpha=brain.readLowAlpha();
if (LowAlpha > 200000UL && LowAlpha < 500000UL)
digitalWrite(ledPin8, HIGH);
else
digitalWrite(ledPin8, LOW);

HighAlpha=brain.readHighAlpha();
if (HighAlpha > 170000UL && HighAlpha < 300000UL)
digitalWrite(ledPin8, HIGH);
else
digitalWrite(ledPin8, LOW);

LowBeta=brain.readLowBeta();
if (LowBeta > 93000UL && LowBeta < 130000UL)
digitalWrite(ledPin8, HIGH);
else
digitalWrite(ledPin8, LOW);
//…

// Umberto - Fine
}
}
else {
digitalWrite(ledPin, LOW);
}

}

ora il programma è diventato così. ti sembra giusto? oppure devo ancora aggiustare qualcosa?

Più che altro sembra che non ascolti

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare.