Codi d'exemple explicatiu
}
Tutorial: Uso de Driver L298N para motores DC y paso a paso con Arduino (electronilab.co)
Como controlar 2 motores de C.C. con el L298N y Arduino (www.leantec.es)
1. Moure el robot cap a endavant durant 1 segon, fer que giri sobre si mateix (movent cada roda en sentits contraris durant el temps necessari per girar), tornar de tornada durant un altre segon i tornar a girar sobre si mateix. Això es repetirà de manera indefinida.
2. Fer que ball costat d'un altre cotxe-robot. El ball pot consistir en avançar breument cap a la dreta i tornar a la posició d'origen. Després que faci el mateix cap a l'esquerra. Després ha de traçar un arc cap a la dreta per col·locar-se en la posició que podria ocupar la seva parella i allà que giri sobre si mateix.
// Pin de la targeta Arduino on s'hagi connectat el pin Tiro del sensor ultrasons
int pinEcho = 6;
// Pin de la targeta Arduino on s'hagi connectat el pin Trig del sensor ultrasons
int pinTrig = 5;
void setup () {
// Activació del pin TRIG com a sortida, per enviar el pols ultrasònic
pinMode (pinTrig, OUTPUT);
// Activació del pin ECHO com a entrada, per rebre el pols ultrasònic
pinMode (pinEcho, INPUT);
// Activació del monitor sèrie per mostrar missatges posteriorment
Serial.begin (9600);
}
void loop () {
// Enviament del pols ultrasònic pel pin TRIG. Requereix establir prèviament
// el senyal LOW i després enviar el pols amb el valor HIGH. S'estableix una
// pausa entre cada ordre per donar temps a la seva execució
digitalWrite (pinTrig, LOW);
delayMicroseconds (10);
digitalWrite (pinTrig, HIGH);
delayMicroseconds (10);
// Obtenir el temps que es triga a rebre el senyal HIGH que va ser enviada
// pel pin Trig, i que serà rebut pel pin Echo.
// Es esperarà a rebre el senyal durant un temps màxim marcat pel
// tercer paràmetre (en microsegons).
// En cas de no rebre el senyal en el temps màxim establert, s'obté 0
long pulseDuration = pulseIn (pinEcho, HIGH, 10000);
// Un cop rebuda la senyal, es calcularà la distància en funció de la velocitat
// del so 340 m / s
int distance = (int) (0.034 * pulseDuration / 2);
if (distance> 0) {
// Mostrar el resultat pel monitor sèrie
Serial.print ( "Distància");
Serial.print (distance);
Serial.println ( "cm");
} Else {
Serial.println ( "Distància desconeguda");
}
}
Exemple 1
Mourem el servo-motor des de l'angle 0 a l'angle 180, i viceversa, de manera indefinida
// Per poder programar servo-motors s'ha d'incloure la llibreria Servo.h
#include <Servo.h>
// Pin de la targeta Arduino on s'ha connectat el pin de senyal del servo
int pinServo1 = 7;
// Variable que fa referència al servo-motor
Servo servo1;
// Emmagatzema l'angle en què es trobi el servo-motor en cada moment
int anguloServo = 90;
// Increment que es va a anar assignat a l'angle del servo-motor
int incrementoAngulo = 1;
void setup () {
// Indicar amb quina pin està associat el servo-motor
servo1.attach (pinServo1);
// Posicionar inicialment el servo-motor en un angle concret
servo1.write (anguloServo);
}
void loop () {
anguloServo + = incrementoAngulo;
// Si el servo-motor ha arribat l'angle màxim, començar a decrementarlo
if (anguloServo == 180) {
incrementoAngulo = -1;
}
// Si el servo-motor ha arribat l'angle mínim, començar a incrementar-lo
if (anguloServo == 0) {
incrementoAngulo = 1;
}
// Moure el servo-motor fins l'angle que s'ha calculat
servo1.write (anguloServo);
// Esperar en aquesta posició un temps
delay (10);
}
Es va a moure el servo-motor entre 3 posicions alternativament: centre - dreta - centre - esquerra - centre - dreta ...
// Per poder programar servo-motors s'ha d'incloure la llibreria Servo.h
#include <Servo.h>
// Pin de la targeta Arduino on s'ha connectat el pin de senyal del servo
int pinServo1 = 7;
// Variable que fa referència al servo-motor
Servo servo1;
// En aquest exemple, el servo-motor es va a anar posicionant successivament
// per mirar al centre, dreta i esquerra, de manera que es van a
// emmagatzemar en 3 constants els angles que ha de prendre el servo-motor
// per prendre les posicions desitjades
const int ANGULO_CENTRO = 100;
const int ANGULO_IZQUIERDA = 50;
const int ANGULO_DERECHA = 150;
// Emmagatzema l'angle en què es trobi el servo-motor en cada moment
int anguloServo = ANGULO_CENTRO;
// En aquest exemple, si el servo-motor està posicionat en l'angle central, cal conèixer
// si s'està girant cap a la dreta o cap a l'esquerra per poder establir
// el següent angle, que podrà ser cap a la derecja o cap a l'esquerra segons
// el sentit de gir actual
boolean haciaDerecha = true;
void setup () {
// Indicar amb quina pin està associat el servo-motor
servo1.attach (pinServo1);
// Posicionar inicialment el servo-motor en un angle concret
servo1.write (ANGULO_CENTRO);
}
void loop () {
// Actuar de manera manera diferent segons l'angle en què es trobi
// actualment el servo-motor
switch (anguloServo) {
casi ANGULO_DERECHA:
// Si està a la dreta, girar-lo cap a l'angle del centre
anguloServo = ANGULO_CENTRO;
// El sentit de gir s'estableix cap a l'esquerra
haciaDerecha = false;
break;
casi ANGULO_CENTRO:
// Si el servo-motor està en la posició central, cal esbrinar si volem
// girar-lo cap a la dreta o cap a l'esquerra, en funció del sentit en què
// actualment està girant
if (haciaDerecha) {
anguloServo = ANGULO_DERECHA;
} Else {
anguloServo = ANGULO_IZQUIERDA;
}
break;
casi ANGULO_IZQUIERDA:
// Si està cap a la izqueirda, girar-lo cap a l'angle del centre
anguloServo = ANGULO_CENTRO;
// El sentit de gir s'estableix cap a la dreta
haciaDerecha = true;
break;
}
// Moure el servo-motor fins l'angle que s'ha calculat
servo1.write (anguloServo);
// Esperar en aquesta posició un temps
delay (500);
}
Sensor de distància HC-SR04 con Arduino (fuenteabierta.teubi.co)
Explicació del funcionamient del sensor i exemples de programació.
Sensor de distància (oloarduino.blogspot.com.es)
Explicación del funcionamient del sensori exemples de programació.
Conociendo los servos (www.prometec.net)