Detector de tipo de basura

Buenas tardes, días o noches, necesito de su ayuda y es que estoy realizando un proyecto para la próxima feria de ciencias y tecnología en mi colegio, se trata de un Basurero que según el tipo de material que detecte abra la compuerta de el bote principal que está en la parte de arriba y y que lo haga caer a uno de los tres botes que están clasificado como, metal, Humedad y seco, pero al poner el código que aparece en el vídeo que me guié empieza a girar el servo sg90 sin tener algún contacto como el metal y al igual que el motor paso a paso 28BYJ-48, osea giran por si solos sin seguir el paso del código, todo está conectado junto a su protoboard, el motor servo sg90 al realizar su función también como que baja la energía que llega a la placa y algunos leds bajan su intensidad cuando funcionan, es pero me ayuden a encontrar alguna solución y les estaré dejando el vídeo para que lo entiendan un poco más, muchas gracias https://youtu.be/4XedfXtPxLQ?si=GJ1rgswKmUsy92ti

Titulo editado por Moderador de acuerdo al punto 5 de las normas del foro.

Pero el proyecto es tuyo no nuestro.
Investiga por tu cuenta como separar materiales.
Mira como se clasifica la basura.

Moderador:
Por favor, lee las Normas del foro
Edita tu título, usa uno que no tenga justamente lo que se considera un título inútil.
Ver en las normas punto 5.
5. Piensa un título y descriptivo
Trata de resumir tu problema con un título inteligente, útil e informativo.
Un título útil salta a la vista de las personas que podrían conocer la respuesta. Los títulos inútiles son los que deberías evitar.
Ejemplos de títulos inútiles que deberías evitar:
• ERROR EN CODIGO, AYUDA URGENTE
• Problema al programar
• Tengo un error
• Error
• Tendré problemas?
• Novato en apuros
• POR FAVOR NECESITO AYUDA RAPIDO!!!!

1 Like

Necesitas una fuente de alimentación que no tenga problemas de rendimiento. ¿Estás utilizando dos baterías 18650 nuevas y completamente cargadas?

Debes verificar que cada dispositivo funcione correctamente por separado.

Aquí tienes un código sencillo para probar tu sensor de proximidad infrarrojo.

// IR sensor de proximidad

#define ir 5

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(ir, INPUT);
}

void loop() {
  Serial.print(digitalRead(ir));
  digitalWrite(LED_BUILTIN, digitalRead(ir));
}

Aquí tienes un código sencillo para probar el sensor de proximidad metálico (el mismo código, pero con un pin diferente).

// Metálico sensor de proximidad

#define proxi 6

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(proxi, INPUT);
}

void loop() {
  Serial.print(digitalRead(proxi));
  digitalWrite(LED_BUILTIN, digitalRead(proxi));
}

Aquí tienes un código sencillo para probar el detector de lluvia/humedad.

// detector de lluvia/humedad.

#define potpin A0

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

void loop() {
  Serial.print(analogRead(potpin));
  Serial.print("\t"); // tab
  for (int i = 0; i < analogRead(potpin) / 20; i++) {
    Serial.print("*");
  }
  Serial.println();
  delay(100);
}

Aquí tienes un código sencillo para probar el zumbador.

#define buzzer 12

void setup() {
  Serial.begin(115200);
  pinMode(buzzer, OUTPUT);
}

void loop() {
  tone(buzzer, 880, 100);
  delay(100);
  noTone(buzzer);

  delay(1000);

  tone(buzzer, 440, 100);
  delay(100);
  noTone(buzzer);

  delay(1000);
}

Un código sencillo para probar el servomotor.

#include <Servo.h>
Servo servoMio;
int servoPin = 7;
int angle = 0;
bool direction;

void setup() {
  servoMio.attach(servoPin);
}

void loop() {
  direction = !direction; // cambio direction
  for (angle = 0; angle < 180; angle++) { // angles 0 a 180
    if (direction == 1)
      servoMio.write(angle);
    else // if (direction == 0)
      servoMio.write(180 - angle); // dirección opuesta
    delay(25);  // esperar al servo
  }
}

Un código sencillo para probar el motor paso a paso. No encuentro tus comandos en la biblioteca CheapStepper.

#include <CheapStepper.h>
CheapStepper stepper (11, 10, 9, 8);

void setup() {
}

void loop() {
  stepper.moveDegreesCW (240);
  delay(1000);
  stepper.moveDegreesCCW (240);
  delay(1000);
}

Pruebe cada dispositivo. Informe de los resultados. Pida ayuda si la necesita.

Para reference: