Muy buenas a todos , estoy frustrado tras una semana tratando de resolver un problema con Millis ya que la funci贸n delay funciona como debe, ahora quiero hacerlo funcionar con millis para que funcione el multiprocesos de arduino, pero tras intentar y buscar el error no me funciona el proyecto.
El proyecto consiste es una resistencia variada LDR (fotoresistencia) y este almacena en un array (NumA y NumB, son dos LDR).
Este debe almacenar en arrays la informacion hasta que el tiempo que se le determine (10000 = 10s).
Hay ejecute los dos pines (control y contro2, que son dos motores, obviamente conectadas a un transistor respectivo para su tipo un 2n2222a)
Queridos compa帽eros agradezco su tiempo y lectura, soy demasiado verde en arduino por eso ver谩n demasiadas cosas a reducir del c贸digo, que pensaba hacerlo al corregir el error.
Arduino uno
El funcionamiento es el deseado cuando esta con delay en funcionamiento, pero mi objetivo es que funcione con millis.
La desventaja que tiene delay es que tengo que esperar a que cargue el c贸digo denuevo (loops) para variar la resistencia y se ejecute, con millis no se ejecuta correctamente, se queda paralizado, y lo que quiero que haga es que en cualquier memento se puede variar los LDR, y cuando pase cierto tiempo se ejecuta toda la arrays.
Muchas gracias por su lectura :).
const int control = 9 ;
const int contro2 = 8 ;
const int indicador1 =10;
const int indicador2 =11;
const int indicador3 =12;
const int indicador4 =13;
long Tiempo = 10000;
long TiempoA = 0;
聽 聽 聽 聽 聽 聽 聽 聽
long 聽NumA[] ={0};
long NumB[] ={0};
int Rue = 0;
int Rue1 = 0;
int fin = 0;
int fin1 =0;
void setup()
聽{ 聽 聽pinMode(control, 聽OUTPUT) ;
聽 聽 聽 pinMode(contro2, OUTPUT);
聽 聽 聽
聽 聽 聽 pinMode(indicador1, OUTPUT);
聽 聽 聽 pinMode(indicador2, OUTPUT);
聽 聽 聽 Serial.begin(9800); 聽
聽 聽 聽
聽}
void loop()
聽{
聽
聽 聽 聽
聽 聽 聽unsigned long Cronometro = millis();
聽 聽 聽 int long n = analogRead(A1)/4; 聽 聽 // Las lecturas analogicas van hasta 1024 y no hasta 255
聽 聽 聽 int long m = analogRead(A2)/4;
聽 聽 聽 Serial.println(n);Serial.print(" LDR NUMERO A- ");
聽 聽 聽 Serial.println(m);Serial.print(" LDR NUMERO B- ");
聽 聽 聽 聽delay(200);
聽 聽
聽 聽
聽 聽 聽 if( 220 > n ){ 聽 聽 聽 聽
聽 聽 聽 聽NumA[Rue1] = 1;
聽 聽 聽 聽++Rue1;
聽 聽 聽 聽}
聽 聽 聽 聽
聽 聽 聽 聽if(220 < n){
聽 聽 聽 聽 聽NumA[Rue1] = 0;
聽 聽 聽 聽 聽++Rue1;
聽 聽
聽 聽 聽 聽}
聽 聽 聽
聽 聽 聽
聽 聽 聽
聽 聽 聽 if(220 > m){
聽 聽 聽 聽 聽NumB[Rue] = 1;
聽 聽 聽 聽 聽++Rue;
聽 聽
聽 聽 聽}
聽 聽 聽 聽
聽 聽 聽 聽if(220 < m){
聽 聽 聽 聽 聽 NumB[Rue] = 0;
聽 聽 聽 聽 聽 ++Rue;
聽 聽 聽 聽
聽 聽 聽 }
聽 聽 聽delay(Tiempo);
聽 聽 聽if (Cronometro - TiempoA < Tiempo){
聽 聽 聽 聽 TiempoA = Cronometro;
聽 聽 聽digitalWrite(indicador1, HIGH);
聽 聽 聽}
聽 聽 聽else{
聽 聽 聽 聽 digitalWrite(indicador1, LOW);
聽 聽 聽} 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽
聽 聽 聽
聽 聽
聽 聽
聽
聽 聽 聽 聽 聽
聽 聽 聽if(NumA[fin1] == 1){
聽 聽 聽 聽analogWrite (control, 255);
聽 聽 聽 聽digitalWrite (indicador4,HIGH);
聽 聽 聽 聽fin1=fin1+1;
聽 聽 聽}
聽 聽 聽else if(NumA[fin1] == 0){
聽 聽 聽 聽analogWrite (control, LOW);
聽 聽 聽 聽digitalWrite (indicador2,HIGH);
聽 聽 聽 聽fin1=fin1+1;
聽 聽 聽 聽}
聽 聽 聽
聽 聽 聽 聽
聽 聽 聽if(NumB[fin] == 1){
聽 聽 聽 聽analogWrite (contro2, 255);
聽 聽 聽 聽digitalWrite (indicador4,HIGH);
聽 聽 聽 聽fin=fin+1 ;
聽 聽 聽}
聽 聽 聽else if(NumB[fin] == 0){
聽 聽 聽 聽analogWrite (contro2,LOW);
聽 聽 聽 聽digitalWrite (indicador3,HIGH);
聽 聽 聽 聽fin=fin+1;
聽 聽 聽 聽}
聽 聽 聽else{
聽 聽 聽 digitalWrite (indicador2,LOW);
聽 聽 聽 digitalWrite (indicador3,LOW);
聽 聽 聽}
聽}