Crearemos, un sensor de aparcamiento mediante un sensor de ultrasonidos, que cuando este cerca de colisionar emita un sonido muy molesta y encienda la luz roja, encienda la luz amarilla con un sonido menos molesto cuando no haya mucho peligro, y cuando no haya nada de peligro encienda la luz verde
long distancia;//
long tiempo;//
int pinTrig=9;//
int pinEcho=8; //
int verde=13;//Declaramos el led verde en el pin 13.
int amarillo=2;//Declaramos el led amarillo en el pin 2;
int rojo=4;//Declaramos el led rojo en el pin 4;
int sonido=6;//Declaramos el zumbador en el pin 6;
int tonoa=2000;//Declaramos el tono a
int tonob=5000;//Declaramos el tono b
int tonoc=1000;//Declaramos el tono c
void setup(){
Serial.begin(9600);//
pinMode(pinTrig, OUTPUT);
pinMode(pinEcho, INPUT);
pinMode(verde,OUTPUT);
pinMode(rojo,OUTPUT);
pinMode(amarillo,OUTPUT);
pinMode(sonido,OUTPUT);
}
void loop(){
digitalWrite(pinTrig,LOW); /* Por cuestión de estabilización del sensor*/
delayMicroseconds(5);//esperamos 5 microsegundos.
digitalWrite(pinTrig, HIGH); /* envío del pulso ultrasónico*/
delayMicroseconds(10);//esperamos 10 microsegundos.
tiempo=pulseIn(pinEcho, HIGH);//
distancia= int(0.017*tiempo); //distancia medida en cm
Serial.println("Distancia ");//En la consula aparece la palabra distancia.
Serial.println(distancia);
Serial.println(" cm");//En la consula aparece la palabra cm
delay(1000);//esperamos 1000ms
if(distancia>30){//creamos una condicional
digitalWrite(rojo,LOW);
digitalWrite(amarillo,LOW);
digitalWrite(verde,LOW);
noTone(sonido);
delay(10);//si la distancia es mayor que 30 cm todos los led estan apagados y esperamos 10 ms.
}else
{
if(distancia>20d&&distancia<30){
digitalWrite(rojo,LOW);
digitalWrite(verde,HIGH);
digitalWrite(amarillo,LOW);
tone(sonido,tonoc,1000);
delay(10);//si la distancia es mayor de 20 cm y menor que 30 cm solo se encience el led verde y espera 10 ms.
}
else{
if(10<=distancia&&distancia<20){
digitalWrite(rojo,LOW);
digitalWrite(amarillo,HIGH);
digitalWrite(verde,LOW);
tone(sonido,tonob,100);
delay(10);//si la distancia es mayor o igual que 10 cm y menos que 20 cm ,solo se enciende el del amarillo.
}
else{
if(distancia<10){
digitalWrite(rojo,HIGH);
digitalWrite(amarillo,LOW);
digitalWrite(verde,LOW);
tone(sonido,tonoc,10);
delay(10);si la distancia es manor que 10 cm, solo se enciende el led rojo y esperamos 10 ms.
}
}
}
}
lunes, 13 de mayo de 2019
viernes, 12 de abril de 2019
Servomotor con 4 pulsadores
#include <Servo.h>
Servo motor1;
Servo motor2;
int posicion_motor1=0;
int pulsadorizquierda=2;
int estado_pulsadorizquierda=0;
int incremento_de_angulo=10;
int pulsadorderecha=5;
int estado_pulsadorderecha=0;
int posicion_motor2=0;
int pulsadorarriba=3;
int estado_pulsadorarriba=0;
int pulsadorabajo=4;
int estado_pulsadorabajo=0;
void setup()
{
motor1.attach(9);
pinMode(pulsadorizquierda,INPUT);
pinMode(pulsadorderecha,INPUT);
motor1.write(posicion_motor1);
motor2.attach(10);
pinMode(pulsadorarriba,INPUT);
pinMode(pulsadorabajo,INPUT);
motor2.write(posicion_motor2);
}
void loop() {
estado_pulsadorizquierda= digitalRead(pulsadorizquierda);
estado_pulsadorderecha= digitalRead(pulsadorderecha);
estado_pulsadorarriba= digitalRead(pulsadorarriba);
estado_pulsadorabajo= digitalRead(pulsadorabajo);
if (estado_pulsadorizquierda==HIGH)
{
posicion_motor1 = posicion_motor1 + incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador izquierdo
motor1.write(posicion_motor1);
delay(100);
if (posicion_motor1 >= 180){
posicion_motor1=0; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador izquierdo
motor1.write(posicion_motor1);
}
}
if (estado_pulsadorderecha==HIGH)
{
posicion_motor1 = posicion_motor1 - incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador derecho
motor1.write(posicion_motor1);
delay(100);
if (posicion_motor1 <= 0){
posicion_motor1=180; //Hacemos que vuelva a su posicion inicial al llegar a su limite de giro
motor1.write(posicion_motor1);
}
}
if (estado_pulsadorarriba==HIGH)
{
posicion_motor2 = posicion_motor2 + incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador izquierdo
motor2.write(posicion_motor2);
delay(100);
if (posicion_motor2 >= 180){
posicion_motor2=0; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador superior
motor2.write(posicion_motor2);
}
}
if (estado_pulsadorabajo==HIGH)
{
posicion_motor2 = posicion_motor2 - incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador inferior
motor2.write(posicion_motor2);
delay(100);
if (posicion_motor2 <= 0){
posicion_motor2=180; //Hacemos que vuelva a su posicion inicial al llegar a su limite de giro
motor2.write(posicion_motor2);
}
}
}
Servo motor1;
Servo motor2;
int posicion_motor1=0;
int pulsadorizquierda=2;
int estado_pulsadorizquierda=0;
int incremento_de_angulo=10;
int pulsadorderecha=5;
int estado_pulsadorderecha=0;
int posicion_motor2=0;
int pulsadorarriba=3;
int estado_pulsadorarriba=0;
int pulsadorabajo=4;
int estado_pulsadorabajo=0;
void setup()
{
motor1.attach(9);
pinMode(pulsadorizquierda,INPUT);
pinMode(pulsadorderecha,INPUT);
motor1.write(posicion_motor1);
motor2.attach(10);
pinMode(pulsadorarriba,INPUT);
pinMode(pulsadorabajo,INPUT);
motor2.write(posicion_motor2);
}
void loop() {
estado_pulsadorizquierda= digitalRead(pulsadorizquierda);
estado_pulsadorderecha= digitalRead(pulsadorderecha);
estado_pulsadorarriba= digitalRead(pulsadorarriba);
estado_pulsadorabajo= digitalRead(pulsadorabajo);
if (estado_pulsadorizquierda==HIGH)
{
posicion_motor1 = posicion_motor1 + incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador izquierdo
motor1.write(posicion_motor1);
delay(100);
if (posicion_motor1 >= 180){
posicion_motor1=0; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador izquierdo
motor1.write(posicion_motor1);
}
}
if (estado_pulsadorderecha==HIGH)
{
posicion_motor1 = posicion_motor1 - incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador derecho
motor1.write(posicion_motor1);
delay(100);
if (posicion_motor1 <= 0){
posicion_motor1=180; //Hacemos que vuelva a su posicion inicial al llegar a su limite de giro
motor1.write(posicion_motor1);
}
}
if (estado_pulsadorarriba==HIGH)
{
posicion_motor2 = posicion_motor2 + incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador izquierdo
motor2.write(posicion_motor2);
delay(100);
if (posicion_motor2 >= 180){
posicion_motor2=0; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador superior
motor2.write(posicion_motor2);
}
}
if (estado_pulsadorabajo==HIGH)
{
posicion_motor2 = posicion_motor2 - incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador inferior
motor2.write(posicion_motor2);
delay(100);
if (posicion_motor2 <= 0){
posicion_motor2=180; //Hacemos que vuelva a su posicion inicial al llegar a su limite de giro
motor2.write(posicion_motor2);
}
}
}
jueves, 28 de marzo de 2019
Servo controlado co M_block
#include <Servo.h>
Servo miservo;
int pos=0;
int TECLA=0;
void setup() {
Serial.begin(9600);
miservo.attach(9);
pos=0;
}
void loop() {
miservo.write(pos);
delay(50);
Serial.println(pos);
if (Serial.available() > 0) { //esto da algo de error
delay(100);
TECLA=Serial.read();
if (TECLA==49){ //es decir, "1"
pos=0; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==50){ //es decir, "2"
pos=45; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==51){ //es decir, "3"
pos=90; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==52){ //es decir, "4"
pos=135; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==53){ //es decir, "5"
pos=180; //ángulo que debe tomar con la tecla indicada
}
}
}
Servo miservo;
int pos=0;
int TECLA=0;
void setup() {
Serial.begin(9600);
miservo.attach(9);
pos=0;
}
void loop() {
miservo.write(pos);
delay(50);
Serial.println(pos);
if (Serial.available() > 0) { //esto da algo de error
delay(100);
TECLA=Serial.read();
if (TECLA==49){ //es decir, "1"
pos=0; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==50){ //es decir, "2"
pos=45; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==51){ //es decir, "3"
pos=90; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==52){ //es decir, "4"
pos=135; //ángulo que debe tomar con la tecla indicada
}
if (TECLA==53){ //es decir, "5"
pos=180; //ángulo que debe tomar con la tecla indicada
}
}
}
Así conseguiriamos girar el servo al angulo deseado mediante las teclas
Servo controladopor ponteciometro
1.- Mueve un servo según una determinada entrada analógica. Mediante un joystick o un dispositivo que cuente con un potenciómetro podemos controlar el movimiento de un servo.
int val; //introducimos la variable val
#include <Servo.h>
Servo servo;
int pot = 3; //entrada analógica del potenciometro
void setup() {
Serial.begin(9600);
servo.attach(6);
}
void loop() {
int valorpot= analogRead(pot);
val=map(valorpot,0,1023,0,180); //el valor de ""val" ira variando según varie el valor del potenciometro
Serial.println(val); //hacemos que nos muestre el angulo de giro en el monitor
delay(500);
servo.write(val);
delay(100);
}
Así conseguiriamos que el servomotor giré exactamente el ángulo que deseemos mediante un controlador, el cual es en este caso en potenciómetro.
int val; //introducimos la variable val
#include <Servo.h>
Servo servo;
int pot = 3; //entrada analógica del potenciometro
void setup() {
Serial.begin(9600);
servo.attach(6);
}
void loop() {
int valorpot= analogRead(pot);
val=map(valorpot,0,1023,0,180); //el valor de ""val" ira variando según varie el valor del potenciometro
Serial.println(val); //hacemos que nos muestre el angulo de giro en el monitor
delay(500);
servo.write(val);
delay(100);
}
Así conseguiriamos que el servomotor giré exactamente el ángulo que deseemos mediante un controlador, el cual es en este caso en potenciómetro.
viernes, 22 de marzo de 2019
Limpiaparabrisas
1.- Modifica el programa para que el LIMPIAPARABRISAS se mueva más lentamente cuando se mueva en un sentido y más rapidamente en el otro.
#include <Servo.h>
#define pinServo 9
Servo miservo;
int pos=0;
void setup() {
miservo.attach(pinServo); //declaramos la salida del sevo
}
void loop() {
for (pos=0; pos<=170; pos=pos+1); {
miservo.write(pos); //movemos el servo en un sentido
delay(800);
}
for (pos=170; pos>=10; pos=pos-70); {
miservo.write(pos); //aumentamos el posicionamiento para aumentar la velocidad
delay(700);
}
}
#include <Servo.h>
#define pinServo 9
Servo miservo;
int pos=0;
void setup() {
miservo.attach(pinServo); //declaramos la salida del sevo
}
void loop() {
for (pos=0; pos<=170; pos=pos+1); {
miservo.write(pos); //movemos el servo en un sentido
delay(800);
}
for (pos=170; pos>=10; pos=pos-70); {
miservo.write(pos); //aumentamos el posicionamiento para aumentar la velocidad
delay(700);
}
}
Movimiento de Servo Simple
Actividades para tomar contacto con las funciones mas simples de los servomotores
Suscribirse a:
Entradas (Atom)