Papeleras con contador digital de residuos ingresados. Ideal para colocar dos juntas y competir por la recogida de desperdicios en un patio de colegio.
En proceso…. Estamos trabajando en ello.

Pegatinas
Al ser un proyecto educativo, podemos usar algunas de las pegatinas que proponemos a continuación que imprimiremos en A3.
Módulo detector de obstáculos
Parte principal del proyecto, contiene 4 pines de conexión y es el KY-032 IR .

Aquí tienes las definiciones de los pines:
- GND: Es como el ancla del módulo, conectándolo a tierra o a un punto común en el circuito.
- +: Aquí es donde el módulo obtiene su energía, necesitando una fuente de alimentación de 3.3 a 5V DC.
- Out: Es el comunicador del módulo. Por defecto, permanece alto y solo baja cuando detecta un obstáculo. Estará conectado al pin D7.
- EN: Es el controlador del módulo. Este pin de activación decide cuándo debe funcionar el módulo. Por defecto, está conectado a GND, lo que significa que el módulo siempre está en funcionamiento. Para nuestro propósito, quitaremos el jumper y conectaremos al pin D6.
¿Tienes curiosidad por saber cómo funciona este pequeño módulo? ¡Es muy interesante! Utiliza un par de componentes infrarrojos: un transmisor y un receptor. El transmisor es como la linterna del módulo, emitiendo luz infrarroja. Cuando aparece un obstáculo, la luz infrarroja rebota y es captada por el receptor. En se momento se envía una señal al microcontrolador.

Nuestro pequeño módulo es bastante robusto, detectando obstáculos en un rango de 2 a 40 cm y ofreciendo una excelente capacidad antiinterferencias. Sin embargo, el color de los objetos afecta su detección. Los objetos más oscuros, especialmente los de color negro, se detectan a una distancia menor. Frente a una pared blanca, el sensor es más eficiente, detectando en un rango de 2 a 30 cm.

El módulo cuenta con dos potenciómetros, uno para ajustar la potencia de transmisión y otro para ajustar la frecuencia de transmisión. Al ajustar estos potenciómetros, puedes modificar su distancia efectiva.
Piezas para imprimir.
Son un total de 3 piezas por módulo. Contienen:
- Carcasa: contiene algunas endiduras para amarrarla a la tapadera de la papelera con algunas bridas pequeñas o pegar según el gusto.
- Tapadera: Cierre total del artefacto para evitar suciedad.
- Pieza de agarre para la matriz led: Irá atornillada con 6 tornillos m3 autorroscables.
Para el acceso de la carga de las baterías hay una cavidad que permite la conexión de los cables USB nano y tipo C.
Esquema electrónico.

Código y librerías.
La librería que controla el display led es <MAX7219_Dot_Matrix.h> que seguro que puedes encontrar en la web o descargarla de aquí. Para guardar en memoria el valor alcanzado como máximo, usamos la librería EEPROM.h que pertenece al IDE de Arduino.
El código no tiene gran dificultad, usaremos la interrupción 1 para resetear el marcador a cero con lo que te recuerdo la necesidad de usar una resistencia de 1k a corriente.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#include <SPI.h> #include <bitBangedSPI.h> #include <MAX7219_Dot_Matrix.h> #include <EEPROM.h> int pin_ir = 7; int pin_en = 8; int pin_reset = 2; MAX7219_Dot_Matrix myDisplay(3, 10); // 3 matrices en el pin 10. char message[3] = "---"; int contador; void setup() { pinMode(pin_ir, INPUT); pinMode(pin_en, OUTPUT); attachInterrupt(digitalPinToInterrupt(pin_reset), a_cero, FALLING); contador = EEPROM.read(1); itoa(contador, message, 10); myDisplay.begin(); myDisplay.setIntensity(15); myDisplay.sendString(message); delay(1000); digitalWrite(pin_en, HIGH); } void loop() { if (digitalRead(pin_ir) == LOW) { contador++; EEPROM.write(1, contador); digitalWrite(pin_en, LOW); itoa(contador, message, 10); myDisplay.setIntensity(15); myDisplay.sendString(message); delay(100); myDisplay.setIntensity(5); myDisplay.sendString(message); delay(200); myDisplay.setIntensity(15); myDisplay.sendString(message); delay(1500); digitalWrite(pin_en, HIGH); } } void a_cero() { contador = 0; itoa(contador, message, 10); myDisplay.setIntensity(15); myDisplay.sendString(message); EEPROM.write(1, contador); } |









