Cosas extrañas que le pasan a mi arduino

el suceso extraño es cuando paso la mano por el Arduino se activan cosas raras o conecto un cable sin nada de corriente...???tengo otro problema con un código me va como loco hace cosas raras

int DCH = 6;   // intermitente derecho     
int IZQ = 9;   // intermitente izquierdo
int POS = 5;   // posicion                 
int LEDD = 3;  // led derecho
int LEDI = 2;  // led izquierdo
  //Pin donde está conectada la tira de leds

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>  // Required for 16 MHz Adafruit Trinket
#endif

int NUMPIXELS = 40;  //Número de leds conectados
int delayval = 100;  // Tiempo de espera
int delayvalI = 15;
int apagado = 0;
int encendido = 0;

void setup() {
  // put your setup code here, to run once:
  // put your setup code here, to run once:
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif

  Serial.begin(9600);
  //pinMode(IZQ, INPUT);    //Entrada de señal intermitente izquierdo
  //pinMode(DCH, INPUT);    //Entrada de señal intermitente dewrecho
  //pinMode(POS, INPUT);    //entrada de posicion
  pinMode(LEDD, OUTPUT);  // Salida que alimenta a la tira LED DERECHA, tanto para intermitencia como de posición
  pinMode(LEDI, OUTPUT);  // Salida que alimenta a la tira LED IZQUIERDA, tanto para intermitencia como de posición
  pinMode(POS,INPUT_PULLUP);
  pinMode(IZQ,INPUT_PULLUP);
  pinMode(DCH,INPUT_PULLUP);

}

void posicion_DCH() {
  digitalWrite(LEDD, HIGH);
  Adafruit_NeoPixel pixels_POS = Adafruit_NeoPixel(NUMPIXELS, LEDD, NEO_GRB + NEO_KHZ800);  //Con esta función ponemos los LED en BLANCO
  pixels_POS.begin();                                                                       // Inicialización
  pixels_POS.show();                                                                        // Inicializa pixels apagados
  //Encender led
  uint32_t color = pixels_POS.Color(250, 250, 250);  // Verde
  for (int i = 0; i < NUMPIXELS && (digitalRead(POS) == HIGH); i++) {
    pixels_POS.setPixelColor(i, color);
  }
  pixels_POS.show();  // Mostrar el color establecido
}  



void posicion_IZQ() {
  digitalWrite(LEDI, HIGH);
  Adafruit_NeoPixel pixels_POS = Adafruit_NeoPixel(NUMPIXELS, LEDI, NEO_GRB + NEO_KHZ800);  //Con esta función ponemos los LED en BLANCO
  pixels_POS.begin();                                                                       // Inicialización
  pixels_POS.show();                                                                        // Inicializa pixels apagados
  //Encender led


 uint32_t color = pixels_POS.Color(250, 250, 250);  // Verde
  for (int i = 0; i < NUMPIXELS && (digitalRead(POS) == HIGH); i++) {
    pixels_POS.setPixelColor(i, color);
  }
  pixels_POS.show();  // Mostrar el color establecido
}


void intermitencia_DCH() {
  digitalWrite(LEDD, HIGH);
  Adafruit_NeoPixel pixels_INT = Adafruit_NeoPixel(NUMPIXELS, LEDD, NEO_GRB + NEO_KHZ800);
  pixels_INT.begin();  // Inicialización
  pixels_INT.show();   // Inicializa pixels apagados
  for (int j = 0; j < NUMPIXELS; j++) {
    if (j < NUMPIXELS) {

      //Encender led
      pixels_INT.setPixelColor(j, 145, 20, 0);  // Brillo moderado de color rojo
      pixels_INT.show();                       // Envia la orden al hardware
      delay(delayvalI);
    } else {
      j = 0;
    }
  }
}


void intermitencia_IZQ() {
  digitalWrite(LEDI, HIGH);
  Adafruit_NeoPixel pixels_INT = Adafruit_NeoPixel(NUMPIXELS, LEDI, NEO_GRB + NEO_KHZ800);
  pixels_INT.begin();  // Inicialización
  pixels_INT.show();   // Inicializa pixels apagados
  for (int j = 0; j < NUMPIXELS; j++) {
    if (j < NUMPIXELS) {

      //Encender led
      pixels_INT.setPixelColor(j, 145, 20, 0);  // Brillo moderado de color rojo
      pixels_INT.show();                       // Envia la orden al hardware
      delay(delayvalI);
    } else {
      j = 0;
    }
  }
}


void loop() {
  while (digitalRead(POS) == HIGH){
    
     while ((digitalRead(DCH) == LOW) && (digitalRead(IZQ) == LOW)) {
    Serial.print("encendido1 _5: ");
      Serial.println(encendido);
      encendido = encendido +1;
    posicion_DCH();
    posicion_IZQ();
   }

    while ((digitalRead(DCH) == HIGH) && (digitalRead(IZQ) == LOW)) {
      Serial.print("encendido2 _5y6: ");
      Serial.println(encendido);
      encendido = encendido +1;
      posicion_IZQ();
      intermitencia_DCH();
    }
    while ((digitalRead(DCH) == LOW) && (digitalRead(IZQ) == HIGH)) {
      Serial.print("encendido3 _5y9: ");
      Serial.println(encendido);
      encendido = encendido +1;
      posicion_DCH();
      intermitencia_IZQ();

    }
    //while ((digitalRead(DCH) == HIGH) && (digitalRead(IZQ) == HIGH)) {
      //intermitencia_DCH();
      //intermitencia_IZQ();

   // }

  }
while (digitalRead(POS) == LOW){

    while ((digitalRead(DCH) == HIGH) && (digitalRead(IZQ) == LOW)) {
      Serial.print("encendido4 _6: ");
      Serial.println(encendido);
      encendido = encendido +1;
      intermitencia_DCH();
    }
    while ((digitalRead(DCH) == LOW) && (digitalRead(IZQ) == HIGH)) {
      Serial.print("encendido5 _9: ");
      Serial.println(encendido);
      encendido = encendido +1;
      delay(delayval);
      intermitencia_IZQ();
    }
    while ((digitalRead(DCH) == HIGH) && (digitalRead(IZQ) == HIGH)) {
      Serial.print("encendido6 _6y9: ");
      Serial.println(encendido);
      encendido = encendido +1;
      intermitencia_IZQ();
      intermitencia_DCH();
  
    }     
  }
}




//posicion_DCH();
//posicion_IZQ();
//intermitencia_DCH();
//intermitencia_IZQ();escribe o pega el código aquí

Copy of Surprising Borwo.pdf (9,3 KB)

De acuerdo al esquemático y si lo interpreto bien, POS es el pin 6 y DCH es el 5 (al revés que en el código).

DCH e IZQ no necesitan las resistencias pull-up activadas porque las lámparas (conectadas a masa) fijan el estado LOW al abrir S1 o S2.
POS tampoco necesita tener activa la R pull-up, al contrario, necesita una R a masa (10K, por ej.).
En resumen, los tres pines debes declararlos INPUT (o sea, las líneas de código comentadas en setup() son las correctas).

Por otro lado, si entre BAT5- y BAT4+ hay más de 5V, seguramente ya se quemaron todos los pines de entrada (o sea, D5, D6 y D9).

Saludos

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