Вы находитесь на странице: 1из 14

// Mover servo de extremo a extremo con parada en el centro

// Descargar el programa y plano en www.elprofegarcia.com

#include <Servo.h> // Incluye la libreria Servo

Servo servo1; // Crea el objeto servo1 con las caracteristicas


de Servo

void setup()
{
servo1.attach(5,600,1500); // Asocia el servo1 al pin 3, define el min y max
del ancho del pulso
} // eso depende del fabricante del servo

void loop()
{
servo1.write(0); // Gira el servo a 0 grados
delay(700); // Espera 700 mili segundos a que el servo
llegue a la posicion

servo1.write(90); // Gira el servo a 90 grados


delay(700);

servo1.write(180); //Gira el servo a 180 grados


delay(700);
}

/*
Sensor de proximidad y al ser inferior a 10cm
envia un pulso de alarma por el pin 13

HC-SR04 conexiones:
VCC al arduino 5v
GND al arduino GND
Echo al Arduino pin 6
Trig al Arduino pin 7

Descargar planos de conexiones en http://elprofegarcia.com/


*/

#define Pecho 6
#define Ptrig 7
long duracion, distancia;

void setup() {
Serial.begin (9600); // inicializa el puerto seria a 9600 baudios
pinMode(Pecho, INPUT); // define el pin 6 como entrada (echo)
pinMode(Ptrig, OUTPUT); // define el pin 7 como salida (triger)
pinMode(13, 1); // Define el pin 13 como salida
}

void loop() {

digitalWrite(Ptrig, LOW);
delayMicroseconds(2);
digitalWrite(Ptrig, HIGH); // genera el pulso de triger por 10ms
delayMicroseconds(10);
digitalWrite(Ptrig, LOW);

duracion = pulseIn(Pecho, HIGH);


distancia = (duracion/2) / 29; // calcula la distancia en
centimetros

if (distancia >= 500 || distancia <= 0){ // si la distancia es mayor a 500cm o


menor a 0cm
Serial.println("---"); // no mide nada
}
else {
Serial.print(distancia); // envia el valor de la distancia por el
puerto serial
Serial.println("cm"); // le coloca a la distancia los
centimetros "cm"
digitalWrite(13, 0); // en bajo el pin 13
}

if (distancia <= 10 && distancia >= 1){


digitalWrite(13, 1); // en alto el pin 13 si la distancia
es menor a 10cm
Serial.println("Alarma......."); // envia la palabra Alarma por el
puerto serial
}
delay(400); // espera 400ms para que se logre
ver la distancia en la consola
}

/* Control Arduino Ethernet


by: http://www.elprofegarcia.com/
controla el encendido o apagado de los Pin 2,3,4 ,5 y 6 del Arduino.
Controla el giro de un servomotor conectado al pin 7
Ethernet Shield adquirida en: http://dinastiatecnologica.com/producto/shield-
ethernet-para-arduino/
*/

#include <SPI.h>
#include <Ethernet.h>
#include <Servo.h>

Servo microservo;
int pos = 0;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Direccion Fisica MAC
byte ip[] = { 192, 168, 0, 50 }; // IP Local que usted debe
configurar
byte gateway[] = { 192, 168, 0, 1 }; // Puerta de enlace
byte subnet[] = { 255, 255, 255, 0 }; //Mascara de Sub Red
EthernetServer server(80); //Se usa el puerto 80 del
servidor
String readString;

void setup() {

Serial.begin(9600); // Inicializa el puerto serial


while (!Serial) { // Espera a que el puerto serial sea conectado, Solo
necesario para el Leonardo
;
}
pinMode(2,OUTPUT); // Se configura como salidas los puertos del 2 al 6
pinMode(3,OUTPUT);
pinMode(4, OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
microservo.attach(7); // Se configura como Servo el Puerto 7

Ethernet.begin(mac, ip, gateway, subnet); // Inicializa la conexion Ethernet y


el servidor
server.begin();
Serial.print("El Servidor es: ");
Serial.println(Ethernet.localIP()); // Imprime la direccion IP Local
}

void loop() {
// Crea una conexion Cliente
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();

//Lee caracter por caracter HTTP


if (readString.length() < 100) {
//Almacena los caracteres a un String
readString += c;

// si el requerimiento HTTP fue finalizado


if (c == '\n') {
Serial.println(readString); //Imprime en el monitor serial

client.println("HTTP/1.1 200 OK"); //envia una nueva pagina


en codigo HTML
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<HEAD>");
client.println("<TITLE>Ethernet Arduino</TITLE>");
client.println("</HEAD>");
client.println("<BODY>");
client.println("<hr />");
client.println("<H1>Arduino Ethernet Shield</H1>");
client.println("<br />");
client.println("<H2>Control on/off 2-6 Servo 7</H2>");
client.println("<br />");

client.println("<a href=\"/?button2on\"\"> Encender Pin2</a> ");


// construye en la pagina cada uno de los botones
client.println(" | | | ");
client.println("<a href=\"/?button2off\"\"> Apagar Pin2</a><br /> ");
client.println("<br />");

client.println("<br />");
client.println("<a href=\"/?button3on\"\"> Encender Pin3</a> ");
client.println(" | | | ");
client.println("<a href=\"/?button3off\"\"> Apagar Pin3</a><br /> ");
client.println("<br />");

client.println("<br />");
client.println("<a href=\"/?button4on\"\"> Encender Pin4</a> ");
client.println(" | | | ");
client.println("<a href=\"/?button4off\"\"> Apagar Pin4</a><br /> ");
client.println("<br />");

client.println("<br />");
client.println("<a href=\"/?button5on\"\"> Encender Pin5</a>");
client.println(" | | | ");
client.println("<a href=\"/?button5off\"\"> Apagar Pin5</a><br />");
client.println("<br />");

client.println("<br />");
client.println("<a href=\"/?button6on\"\"> Encender Pin6</a> ");
client.println(" | | | ");
client.println("<a href=\"/?button6off\"\"> Apagar Pin6</a><br /> ");
client.println("<br />");

client.println("<br />");
client.println("<a href=\"/?left\"\">Girar Izq Pin7</a>");
client.println(" | | | ");
client.println("<a href=\"/?right\"\">Girar Der Pin7</a><br />");
client.println("<hr />");
client.println("<p>by: elprofegarcia.com</p>");
client.println("<br />");
client.println("</BODY>");
client.println("</HTML>");

delay(1);
//detiene el cliente servidor
client.stop();

//control del arduino si un boton es presionado

if (readString.indexOf("?button2on") >0){
digitalWrite(2, HIGH);
}
if (readString.indexOf("?button2off") >0){
digitalWrite(2, LOW);
}

if (readString.indexOf("?button3on") >0){
digitalWrite(3, HIGH);
}
if (readString.indexOf("?button3off") >0){
digitalWrite(3, LOW);
}

if (readString.indexOf("?button4on") >0){
digitalWrite(4, HIGH);
}
if (readString.indexOf("?button4off") >0){
digitalWrite(4, LOW);
}

if (readString.indexOf("?button5on") >0){
digitalWrite(5, HIGH);
}
if (readString.indexOf("?button5off") >0){
digitalWrite(5, LOW);
}

if (readString.indexOf("?button6on") >0){
digitalWrite(6, HIGH);
}
if (readString.indexOf("?button6off") >0){
digitalWrite(6, LOW);
}

if (readString.indexOf("?left") >0){
for(pos = 0; pos < 180; pos += 3) // Giro de 0 a 180 grados
{
microservo.write(pos);
delay(15); // Espera 15 ms para que el
servo llege a la posicion
}
}
if (readString.indexOf("?right") >0){
for(pos = 180; pos>=1; pos-=3) //Giro de 180 a 0 grados
{
microservo.write(pos);
delay(15); // Espera 15 ms para que el
servo llege a la posicion
}
}
// Limpia el String(Cadena de Caracteres para una nueva lectura
readString="";

}
}
}
}
}

/* Atrapa los 7 Fugitivos


* Juego con LCD 2x16 y Arduino
* By: www.elprofegarcia.com componentes comprados en:
www.dinastiatecnologica.com
* Atrapa los fugitivos al poner tierra en el puerto analogo A5
*/
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Configura pines de salida para el LCD

// defino los nuevo caracter o imagenes


byte letra1[8] = { B01110, B01110, B01110, B00100, B11111, B00100, B01010, B01010
}; // fugitivo
byte letra2[8] = { B01110, B01110, B01110, B10101, B01110, B00100, B01010, B10001
};

byte letra3[8] = { B00100, B00100, B00100, B00100, B00100, B11111, B01110, B00100
}; //flecha

byte letra0[8] = { B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00000
}; // blanco
byte letra4[8] = { B01110, B01110, B01110, B11111, B10101, B01110, B01010, B11011
}; // atrapado

int x=0;
int y=1;
int retardo=200;
int presos=0;
int libres=7;
int fallas=0;
int puntaje=0;
void setup() {
lcd.begin(16, 2); // Configura el LCD con 16 columnas y 2 filas
lcd.createChar(1, letra1); // asigna los nuevos caracteres por numeros
lcd.createChar(2, letra2);
lcd.createChar(3, letra3);
lcd.createChar(0, letra0);
lcd.createChar(4, letra4);
}

void loop() {

lcd.setCursor(0, 0); // Posicion del letrero en 0,0


lcd.print(presos);
lcd.setCursor(2, 0); // Posicion del letrero en 2,0
lcd.print("F");
lcd.setCursor(3, 0); // Posicion del letrero en 3,0
lcd.print(fallas);
lcd.setCursor(0, 1); // Posicion del letrero en 0,1
lcd.print(libres);

lcd.setCursor(x,y); // imagen fugitivo 1


lcd.write(byte(1));
delay(retardo);

lcd.setCursor(x,y); // imagen fugitivo 2


lcd.write(byte(2));
delay(retardo);

lcd.clear(); // borrar Pantalla

lcd.setCursor(14,0); // Flecha en posicion


lcd.write(byte(3));

lcd.setCursor(5, 0); // Posicion del letrero


lcd.print("Atrapelo");

if (analogRead(A5)<= 10) { // Si es oprimido el interruptor A5


lcd.setCursor(14,0); // Se borra la flecha
lcd.write(byte(0));
lcd.setCursor(14,1); // Baja la flecha
lcd.write(byte(3));

if (x == 14) { // Si coincide en la posicion 14 y es capturado


lcd.setCursor(5, 0);
lcd.print("Bien .");
lcd.setCursor(x,y); // Coloca imagen de capturado
lcd.write(byte(4));
presos++;
libres--;
}
else{ // Cuando no es capturado
lcd.setCursor(5, 0);
lcd.print("Fallo .");
lcd.setCursor(x,y); // donde quedo el corredor, Imagen de que sigue
libre
lcd.write(byte(2));
fallas++;
}
delay(3000); // Espera 3 segundos
}

x=x+1; // avanza el corredor


if (x>=16) {
x=0; // al pasar regresa al inicio
}

retardo = random(1,150); // Escoge un retardo aleatorio

if (fallas == 3) { // Si coincide en la posicion 14 y es


capturado
lcd.clear(); // borrar Pantalla
lcd.setCursor(3, 0);
lcd.print("NO PUDO ...");
puntaje=presos-fallas;
lcd.setCursor(3, 1);
lcd.print("Puntaje:");
lcd.setCursor(12, 1);
lcd.print(puntaje);
delay (7000);
presos=0;
libres=7;
fallas=0;
lcd.clear(); // borrar Pantalla
}
if (libres == 0) { // Si coincide en la posicion 14 y es capturado
lcd.clear(); // borrar Pantalla
lcd.setCursor(3, 0);
if (fallas == 0) { // Si no hubo fallas
lcd.print("EXCELENTE!!!!");
}
else{
lcd.print("PUEDE MEJORAR"); // si termino pero con alguna falla
}

puntaje=presos-fallas;
lcd.setCursor(3, 1);
lcd.print("Puntaje:");
lcd.setCursor(12, 1);
lcd.print(puntaje); // Puntaje final
delay (7000);
presos=0;
libres=7;
fallas=0;
lcd.clear(); // borrar Pantalla
}
}

/* Arduino Control House By: http://www.elprofegarcia.com/


.... Contorl digital on/off del pin 13 al pin 6
.... Dimer de los Pin 3 y 5
.... Control de Servo por PIN 4
.... Lectura analoga del Puerto AO

Conexion del Modulo Bluetooth al Arduino


usando Pin 0 y 1
Componentes conprados en la tienda: http://www.dinastiatecnologica.com/
*/

#include <Servo.h>
Servo servo1; // Crea el servo1 con las librerias de Servo.h

int estado=0;
int retardo=100;
int analogo=0;

void setup(){
servo1.attach(4);
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
pinMode(8,OUTPUT);
pinMode(7,OUTPUT);
pinMode(6,OUTPUT);
pinMode(5,OUTPUT);
pinMode(4,OUTPUT);
pinMode(3,OUTPUT);
Serial.begin(9600);
delay(1000);
}
void loop(){
if(Serial.available()>0){ // Si el puerto serie esta habilitadp
estado = Serial.read(); // Lee lo que llega por el puerto Serie
}

if(estado== 'a'){ // on/off de los pin 13 al pin 6


digitalWrite(13,HIGH);
}
if(estado== 'b' ){
digitalWrite(13,LOW);
}
if(estado== 'c'){
digitalWrite(12,HIGH);
}
if(estado== 'd' ){
digitalWrite(12,LOW);
}
if(estado== 'e'){
digitalWrite(11,HIGH);
}
if(estado== 'f' ){
digitalWrite(11,LOW);
}
if(estado== 'g' ){
digitalWrite(10,HIGH);
}
if(estado== 'h' ){
digitalWrite(10,LOW);
}
if(estado== 'i' ){
digitalWrite(9,HIGH);
}
if(estado== 'j' ){
digitalWrite(9,LOW);
}
if(estado== 'k' ){
digitalWrite(8,HIGH);
}
if(estado== 'l' ){
digitalWrite(8,LOW);
}
if(estado== 'm' ){
digitalWrite(7,HIGH);
}
if(estado== 'n' ){
digitalWrite(7,LOW);
}
if(estado== 'o' ){
digitalWrite(6,HIGH);
}
if(estado== 'p' ){
digitalWrite(6,LOW);
}
if(estado== 'A' ){ // Movimiento del SERVO
servo1.write(0);
}
if(estado== 'B' ){
servo1.write(90);
}
if(estado== 'C' ){
servo1.write(180);
}

if(estado=='s'){ // Dimer 1 conectado al pin 5


analogWrite(5,0);
}

if(estado=='t'){
analogWrite(5,3);
}
if(estado=='u'){
analogWrite(5,8);
}
if(estado=='v'){
analogWrite(5,20);
}
if(estado=='w'){
analogWrite(5,30);
}
if(estado=='x'){
analogWrite(5,60);
}
if(estado=='y'){
analogWrite(5,125);
}
if(estado=='z'){
analogWrite(5,255);
}

if(estado=='1'){ // Dimer 2 conectado al pin 3


analogWrite(3,0);
}

if(estado=='2'){
analogWrite(3,3);
}
if(estado=='3'){
analogWrite(3,8);
}
if(estado=='4'){
analogWrite(3,20);
}
if(estado=='5'){
analogWrite(3,30);
}
if(estado=='6'){
analogWrite(3,60);
}
if(estado=='7'){
analogWrite(3,125);
}
if(estado=='8'){
analogWrite(3,255);
}

if(estado=='q'){ // envia el valor leido del puerto analogo A0


analogo=analogRead(A0);
Serial.print(analogo);
Serial.println("°C");
delay (retardo);
estado=0;
}
delay(retardo);
}

// Mover servo de derecha a izquierda al oprimir el pulsador de cada lado


// el servo regresa automaticamente al centro (Direccion de Carro)
// Descargar el programa y plano en www.elprofegarcia.com

#include <Servo.h> // Incluye la libreria Servo

Servo servo1; // Crea el objeto servo1 con las caracteristicas


de Servo
int pulsador_der = 1; // Fijamos el pulsador de la derecha en 0
int pulsador_izq = 1; // Fijamos el pulsador de la izquierda en 0

void setup()
{
servo1.attach(5,600,1500); // Asocia el servo1 al pin 3, define el min y max
del ancho del pulso
// eso depende del fabricante del servo
pinMode(2, INPUT); // Configuramos el pin 2 como entrada
pinMode(3, INPUT); // Configuramos el pin 3 como entrada
}

void loop()
{
pulsador_der = digitalRead(2); //lee el valor del pin 2 si esta en alto o
bajo
pulsador_izq = digitalRead(3); //lee el valor del pin 3 si esta en alto o
bajo

if (pulsador_der == LOW) { // si se oprimio el plsador de la derechao


servo1.write(180); // Gira el servo a 1800 grados
delay(15); // Espera 15 mili segundos a que el servo
llegue a la posicion
}
if (pulsador_izq == LOW) { // si se oprimio el pulsador de la
izquierda
servo1.write(0); // Gira el servo a 0 grados
delay(15); // Espera 15 mili segundos a que el servo
llegue a la posicion
}
if(pulsador_izq == HIGH && pulsador_der == HIGH){ // Si se dejan de oprimir
los dos pulsadores
servo1.write(90); // Gira el servo a 90
grados
delay(15); // Espera 15 mili segundos
a que el servo llegue a la posicion
}
}

1. // MPU-6050 Short Example Sketch


2. // By Arduino User JohnChi
3. // August 17, 2014
4. // Public Domain
5. #include<Wire.h>
6. const int MPU_addr=0x68; // I2C address of the MPU-6050
7. int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
8. void setup(){
9. Wire.begin();
10. Wire.beginTransmission(MPU_addr);
11. Wire.write(0x6B); // PWR_MGMT_1 register
12. Wire.write(0); // set to zero (wakes up the MPU-6050)
13. Wire.endTransmission(true);
14. Serial.begin(9600);
15. }
16. void loop(){
17. Wire.beginTransmission(MPU_addr);
18. Wire.write(0x3B); // starting with register 0x3B
(ACCEL_XOUT_H)
19. Wire.endTransmission(false);
20. Wire.requestFrom(MPU_addr,14,true); // request a total
of 14 registers
21. AcX=Wire.read()<<8|Wire.read(); // 0x3B
(ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
22. AcY=Wire.read()<<8|Wire.read(); // 0x3D
(ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
23. AcZ=Wire.read()<<8|Wire.read(); // 0x3F
(ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
24. Tmp=Wire.read()<<8|Wire.read(); // 0x41
(TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
25. GyX=Wire.read()<<8|Wire.read(); // 0x43
(GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
26. GyY=Wire.read()<<8|Wire.read(); // 0x45
(GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
27. GyZ=Wire.read()<<8|Wire.read(); // 0x47
(GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
28. Serial.print("AcX = "); Serial.print(AcX);
29. Serial.print(" | AcY = "); Serial.print(AcY);
30. Serial.print(" | AcZ = "); Serial.print(AcZ);
31. Serial.print(" | Tmp =
"); Serial.print(Tmp/340.00+36.53); //equation for
temperature in degrees C from datasheet
32. Serial.print(" | GyX = "); Serial.print(GyX);
33. Serial.print(" | GyY = "); Serial.print(GyY);
34. Serial.print(" | GyZ = "); Serial.println(GyZ);
35. delay(333);
36. }

#include <Wire.h>
#include<I2Cdev.h>
#include<MPU6050.h>

MPU6050 mpu;

int16_t ax, ay, az;


int16_t gx, gy, gz;

#define pin1 3
#define pin2 5

void setup(){
Serial.begin(9600);
Serial.println("Initialize MPU");
mpu.initialize();
//Serial.println(mpu.testConnection() ? "Connected" : "Connection
failed"); pinMode(pin1,OUTPUT);
pinMode(pin2,OUTPUT);

void loop(){
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

ax = map(ax, -17000, 17000, -1500, 1500);

//Serial.println(ax);
if(ax > 0){
if(ax<255){
Serial.println(ax);
analogWrite(pin2,ax);
}
else{
Serial.println("+255");
analogWrite(pin2,255);
}

}
if(ax<0){
if(ax>-255){
Serial.println(ax);
analogWrite(pin1, ax-ax-ax);
}
else{
Serial.println("-255");
analogWrite(pin1, 255);
}
}
delay(1000);
}

<pre>#include <Wire.h>
#include <I2Cdev.h>
#include <MPU6050.h>

#include <AFMotor.h>
AF_DCMotor motor1(1, MOTOR12_64KHZ); // create motor #2, 64KHz pwm
AF_DCMotor motor2(2, MOTOR12_64KHZ);

MPU6050 mpu;
int16_t ax, ay, az;
int16_t gx, gy, gz;

int valMotor1;
int valMotor2;
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("Initialize MPU");
mpu.initialize();
Serial.println(mpu.testConnection() ? "Connected" : "Connection failed");

motor1.setSpeed(100); // set the speed to 200/255


motor2.setSpeed(100);

}
void loop()
{
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

ax = map(ax, -17000, 17000, -125, 125);


valMotor1 = 125+ax;
valMotor2 = 125-ax;

Serial.println(valMotor1, DEC);
Serial.println(valMotor2, DEC);

if(valMotor1 > 0 && valMotor1 < 255){


motor1.setSpeed(valMotor1);
}
if(valMotor2 > 0 && valMotor2 < 255){
motor2.setSpeed(valMotor2);
}

motor1.run(FORWARD); // turn it on going forward


motor2.run(BACKWARD);

delay(200);

Вам также может понравиться