Saludos, Mi proyecto se compone de un arduino uno, sensor ultrasonico y una matrix. el funcionamiento que quiero es el siguiente: cuando el sensor detecte un obstáculo la matrix imprima un NO de lo contrario se mantenga la matrix con un si, estuve realizando el programa lo compile y lo corrí en proteus pero no vi nada en matrix, les dejo en adjunto todo lo necesario para que prueben y así me puedan dar una solución. Gracias de antemano.
#include "LedControl.h"
#define trigPin 8
#define echoPin 7
LedControl lc=LedControl(12,11,10,1); // Pins: DIN,CLK,CS, # of Display connected
unsigned long delayTime=50; // Delay between Frames
// Put values in arrays
byte invader1a[] =
{
B01111111, B01000000, B01000000, B01000000, B00000000 // First frame of invader #1
};
byte invader1b[] =
{
B00111111, B01000000, B01000000, B00111111, B00000000 // U // Second frame of invader #1
};
byte invader2a[] =
{
B01000001, B01111111, B01000001, B00000000, B00000000 // I //First frame of invader #2
};
byte invader2b[] =
{
B01000110, B01001001, B01001001, B00110010, B00000000 // S// Second frame of invader #2
};
void setup()
{
Serial.begin (9600);
pinMode(trigPin, OUTPUT); //Trig est une sortie
pinMode(echoPin, INPUT); //Echo est le retour, en entrée
lc.shutdown(0,false); // Wake up displays
lc.shutdown(1,false);
lc.setIntensity(0,5); // Set intensity levels
lc.setIntensity(1,5);
lc.clearDisplay(0); // Clear Displays
lc.clearDisplay(1);
}
// Take values in Arrays and Display them
void sinvader1a()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,invader1a[i]);
}
}
void sinvader1b()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,invader1b[i]);
}
}
void sinvader2a()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(1,i,invader2a[i]);
}
}
void sinvader2b()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(1,i,invader2b[i]);
}
}
void loop()
{
Serial.begin (9600);
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); //Trig déclenché 10ms sur HIGH
digitalWrite(trigPin, LOW);
// Calcul de l'écho
duration = pulseIn(echoPin, HIGH);
// Distance proportionnelle à la durée de sortie
distance = duration*340/(2*10000); //Vitesse du son théorique
if (distance < 5) { // Distance trop près
sinvader1a();
delay(delayTime);
sinvader2a();
delay(delayTime);
}
else { //Trop loin
sinvader1b();
delay(delayTime);
sinvader2b();
delay(delayTime);
}
//Hors de portée (duration)
if ( distance <= 3){
//Serial.print(duration);
Serial.println("Hors de portee");
}
else {
Serial.println(distance);
Serial.println(" cm ");
}
delay(100); //0.1 sec entre deux mesures
}
Matrix con sensor ultra arduino.zip (161 KB)
LedControlMod.zip (13.9 KB)