martes, 7 de mayo de 2019

lunes, 22 de abril de 2019

Sensor de Velocidad

Primer Programa Utilizando el Sensor de Velocidad
 con Interrupciones


//++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++
volatile int DER=0; 
volatile int IZQ=0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  attachInterrupt(0,RUEDADER,RISING);//INT0 en pin2
  attachInterrupt(1,RUEDAIZQ,FALLING);//INT1 en pin3
}

void loop() {
  // put your main code here, to run repeatedly:
  delay(1000);
  Serial.print("Pulsos en Rueda Derecha=");
  Serial.println(DER);
  Serial.print("Pulsos en Rueda Izquierda=");
  Serial.println(IZQ);
  Serial.println("+/+/+/+/+/+/+/+/+/+/+/+");
  DER=0;
  IZQ=0;
}

void RUEDADER(){
  DER++;        //INCREMENTAR +1
}

void RUEDAIZQ(){
  IZQ++;        //INCREMENTAR +1
}
//++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++




Les deseo mucho éxito
y sigamos programando!!!

viernes, 19 de abril de 2019

Control de Motor con PWM

Hola a todos, hoy les voy a presentar como controlar la velocidad de  las ruedas en el ROBOTCAR, con esto vamos a corregir el avance que tenia el robot y lograremos que lo haga en linea recta.


El codigo es el siguiente:
//+++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++
int mp7=7;      //CONTROL MOTOR PIN7
int PWM_mp6=6;  //SALIDA PWM AL MOTOR IZQUIERDO
int PWM_mp5=5;  //SALIDA PWM AL MOTOR DERECHO
int mp4=4;      //CONTROL MOTOR PIN4

void setup() {
  // put your setup code here, to run once:
  pinMode(mp7,OUTPUT);
  pinMode(PWM_mp6,OUTPUT);
  pinMode(PWM_mp5,OUTPUT);
  pinMode(mp4,OUTPUT);

  digitalWrite(mp7,LOW);  //LOW=BAJO= 0 VOLTS 
  digitalWrite(mp4,LOW);  //LOW=BAJO= 0 VOLTS
}

void loop() {
  // put your main code here, to run repeatedly:
  analogWrite(PWM_mp6,150); //MOTOR IZQUIERDO
  analogWrite(PWM_mp5,255); //MOTOR DERECHO
}
//+++++++++++++++++++++++++++++++++++++++++++++

//+++++++++++++++++++++++++++++++++++++++++++++
Les deseo mucho éxito
y sigamos programando!!!

martes, 2 de abril de 2019

Sensor Detector de Sonido



Código y Vídeo Tutorial más abajo:


//++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++
#define BUZZER 8
int MICROFONO=3;

int GREEN=A0;
int YELLOW=A1;
int RED=A2;

int VARX;
bool SONIDO= false;
unsigned long TIEMPO;


void setup(){
  pinMode(BUZZER,OUTPUT);
  pinMode(MICROFONO,INPUT);
  Serial.begin(9600);
  VARX=0;
  analogWrite(GREEN,255);
  delay(1000);
  analogWrite(RED,0);
  analogWrite(GREEN,0);
  analogWrite(YELLOW,0);
}

void loop(){
  SONIDO= digitalRead(MICROFONO);

  if((SONIDO==true) && (VARX==0)) 
  {
    //SONIDO=false;
    VARX++;
    TIEMPO= millis();
    delay (200);
  } 
  else if((SONIDO==true) && (VARX>0)) 
  {
    //SONIDO=false;
    VARX++;
    delay (200);
  } 
  

  if(((millis()-TIEMPO)>700) && (VARX>=1))
  { // Reseteamos estados al pasar 700 ms
    Serial.print("VarX=");
    Serial.println(VARX);
  
    switch (VARX){
      case 1:
          Serial.println("Turn On RED Led");
          tone(BUZZER,2000,300);
          analogWrite(RED,255);
          break;
      case 2:
          Serial.println("Turn On YELLOW Led");
          tone(BUZZER,700,300);
          analogWrite(YELLOW,255);
          break;
      case 3:        
          Serial.println("Turn On GREEN Led");
          analogWrite(GREEN,255);
          tone(BUZZER,300,300);
          break;
    }
    VARX=0;    
    delay(1000);
    analogWrite(RED,0);
    analogWrite(GREEN,0);
    analogWrite(YELLOW,0);
  }
}
//++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++



Les deseo mucho éxito


y sigamos programando!!!

lunes, 18 de marzo de 2019

Sensor LDR

Hoy aprenderemos a usar un sensor que detecta cuando tenemos luz, es más conocido como LDR.
;+++++++++++++++++++++++++++++++++++++++
;+++++++++++++++++++++++++++++++++++++++
int LDR=A5; //SENSOR DE LUZ
#define LED 13

void setup() {
  // put your setup code here, to run once:
  pinMode(LED,OUTPUT);  //LED EN PIN 13
  Serial.begin(9600);   //COMUNICACION CON LA PC
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println(analogRead(LDR)); //LEER SENSOR LDR
  digitalWrite(LED,!digitalRead(LED));//TOGGLE PIN 13
  delay(1000);

}
;+++++++++++++++++++++++++++++++++++++++
;+++++++++++++++++++++++++++++++++++++++





Les deseo mucho éxito

y sigamos programando!!!


domingo, 10 de marzo de 2019

Sensor de Humedad 2

Os mostrare otro tipo de sensor de humedad y realizaremos una sencilla practica para visualizar los valores que entrega el sensor antes la presencia de humedad. El código es el siguiente:


//+++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++
int SH=A3;   //SENSOR DE HUMEDAD

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600); 
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println(analogRead(SH));
  delay(1000);
}

//+++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++



Para aprender más sobre el otro sensor de humedad visite la siguiente pagina:
https://nbrobots.blogspot.com/2019/01/sensor-de-humedad.html


Les deseo mucho éxito
y sigamos programando!!!

lunes, 4 de marzo de 2019

Manipular el Robot con el Control Remoto

Esta practica es un reto, porque vamos a unir dos programas y manipularemos nuestro RobotCar usando un Control Remoto. Para realizar esta practica necesitas el código del Receptor de luz Infrarroja de un Mando a Distancia(control remoto) el cual puedes descargar en este enlace: http://nbrobots.blogspot.com/2019/02/... Nota: debes instalar la librería "IRLremote" aquí les pongo la liga para la descarga: https://drive.google.com/drive/folder... Y también les dejo un vídeo de como pueden cargarlo si tienen algún problema: https://youtu.be/9K6lk1vWZr4 Y por último debemos copiar las funciones que creamos para poder mover las ruedas, y también configurar el registro DDRD para usar PORTD con dicho propósito(o si lo prefieren usar las instrucciones pinMode y digitalWrite): http://nbrobots.blogspot.com/2019/02/...



//++++++++++++++++++++++++++++++++++++++++++++++++

//++++++++++++++++++++++++++++++++++++++++++++++++
#include <IRLremote.h> int BUZZER=8; int RED=A2; //LED ROJO int YELLOW=A1; //LED AMARILLO int GREEN=A0; //LED VERDE int INTERRUPCION=1; //INT 1 colocada en PIN#3 uint8_t PROTOCOLO; //FORMATO DE INFORMACION uint16_t DIRECCION; //DEL CONTROL REMOTO uint32_t TECLA; uint8_t COPIA; //ALMACENA UNA COPIA TEMPORAL DE "SREG" void ADELANTE(){ PORTD=B10010000; } void DERECHA(){ PORTD=B10000000; } void IZQUIERDA(){ PORTD=B00010000; } void DETENER(){ PORTD=B00000000; } void REVERSA(){ PORTD=B01100000; } void IREvent(uint8_t protocol,uint16_t address,uint32_t command){ PROTOCOLO=protocol; DIRECCION=address; TECLA=command; } void setup() { // put your setup code here, to run once: IRLbegin<IR_ALL>(INTERRUPCION); //Configura receptor Serial.begin(9600); //PINES 7,6,5,4,3,2,1,0 = PORTD //ENTRADA=0 Y SALIDA=1 DDRD=B11110011; pinMode(BUZZER,OUTPUT); } void loop() { // put your main code here, to run repeatedly: COPIA=SREG; cli(); //CLEAR Global Interrupt Flag while(PROTOCOLO!=0 && TECLA!=0){ Serial.print("Protocolo="); Serial.print(PROTOCOLO); Serial.print(" Dirección="); Serial.print(DIRECCION,HEX); Serial.print(" Tecla="); Serial.println(TECLA,HEX); PROTOCOLO=0; } SREG=COPIA; //sei(); //SET Global Interrupt Flag while(TECLA!=0){ switch(TECLA){ case 0x49B6: ADELANTE(); delay(1000); DETENER(); break; case 0xF906: DERECHA(); delay(500); DETENER(); break; case 0xE916: IZQUIERDA(); delay(500); DETENER(); break; case 0x1BE4: REVERSA(); delay(2000); DETENER(); break; case 0xD926: tone(BUZZER,200,200); analogWrite(RED,0); analogWrite(YELLOW,0); analogWrite(GREEN,0); break; case 0x6897: analogWrite(RED,255); analogWrite(YELLOW,0); analogWrite(GREEN,0); break; case 0x9867: analogWrite(RED,0); analogWrite(YELLOW,255); analogWrite(GREEN,0); break; case 0xB04F: analogWrite(RED,0); analogWrite(YELLOW,0); analogWrite(GREEN,255); break; } TECLA=0; } }
//++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++


Les deseo mucho éxito para este reto
y sigamos programando!!!

lunes, 18 de febrero de 2019

Control Remoto



Para esta practica necesitamos descargar la Libreria "IRLremote", la cual puedes descargar en la siguiente liga: https://drive.google.com/drive/folders/1oBBXT5tb-sHLiMJtyfgbPPG5ptOzEJLY?usp=sharing


Aquí les dejo el código para trabajar con el Receptor de Luz Infraroja y recibir la información de un Control Remoto (Mando a Distancia):

//+++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++
#include <IRLremote.h>
int INTERRUPCION = 1; //PIN 3

uint8_t PROTOCOLO;    //FORMATO DE LA INFORMACIÓN
uint16_t DIRECCION;   //QUE RECIBE DEL CONTROL REMOTO
uint32_t TECLA;

uint8_t COPIA;

void IREvent(uint8_t protocol, uint16_t address, uint32_t command){
  PROTOCOLO = protocol;
  DIRECCION = address;
  TECLA = command;
}

void setup(){
  IRLbegin<IR_ALL>(INTERRUPCION);
  Serial.begin(9600);
}

void loop(){
  COPIA = SREG;
  cli();  //CLEAR Global Interrupt Flag

  while(PROTOCOLO!=0){
    Serial.print("Protocolo=");
    Serial.print(PROTOCOLO);
    Serial.print(" Direccion=");
    Serial.print(DIRECCION, HEX);
    Serial.print(" Tecla=");
    Serial.println(TECLA, HEX);
    PROTOCOLO=0;
  }
  SREG = COPIA;
  //sei(); //SET Global Interrupt Flag
}
//+++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++

Si tuvieron algún problema para cargar la librería aquí les dejo otra solución para montar el archivo a la biblioteca de Arduino



Les deseo mucho éxito

y sigamos programando!!!

jueves, 14 de febrero de 2019

Control de Motor



//++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++
void ADELANTE(){
  PORTD=B10100000;    
}

void DERECHA(){
  PORTD=B10000000;
}

void IZQUIERDA(){
  PORTD=B00100000;
}
void DETENER(){
  PORTD=B00000000;
}

void REVERSA(){
  PORTD=B01010000;
}

void setup() {
  // put your setup code here, to run once:
  //PINES 7,6,5,4,3,2,1,0 = PORTD
  //ENTRADA=0 Y SALIDA=1
  DDRD=B11110011;
}

void loop() {
  // put your main code here, to run repeatedly:
  ADELANTE();
  delay(2000);
  DERECHA();
  delay(500);
  IZQUIERDA();
  delay(500);
  DETENER();
  delay(3000);
  REVERSA();
  delay(1000);
}
//++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++
Les deseo mucho éxito
y sigamos programando!!!

miércoles, 6 de febrero de 2019

Arduino Serial print y read

Hola, aquí les dejo dos vídeos para aprender como 
enviar datos desde Arduino a la PC y viceversa:






//+++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++
#define BUZZER 8    //PIN #8 PARA BUZZER
int GREEN=A0;       //PUERTO ANALOGICO
int YELLOW=A1;
int RED=A2;
char TECLA;

void APAGAR(){
  analogWrite(RED,0);
  analogWrite(YELLOW,0);
  analogWrite(GREEN,0);
}

void setup() {
  // put your setup code here, to run once:
  pinMode(BUZZER,OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  while(Serial.available()==0){}//espera sino hay datos
  TECLA=Serial.read();
  
  if(TECLA=='\n'){}
  else{
    
    APAGAR();       //Turn OFF Leds
    
    switch(TECLA){
      case 'R':
        Serial.println("Turn On RED Led");
        analogWrite(RED,255);
        break;
      case 'Y':
        Serial.println("Turn On YELLOW Led");
        analogWrite(YELLOW,255);
        break;
      case 'G':
        Serial.println("Turn On GREEN Led");
        analogWrite(GREEN,255);
        break;
      default:
        Serial.println("Key Wrong");
        tone(BUZZER,200,300);
        break;
    }
  }    
}
//+++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++


Les deseo mucho éxito
y sigamos programando!!!


miércoles, 30 de enero de 2019

Sensor de Humedad

Aquí el código para poder usar el Sensor de Humedad.

//+++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++
#define LED 13    //LED EN PLACA ARDUINO & SHIELD
#define BUZZER 8  //ZUMBADOR EN EL PIN #8
int RED=A2;       //LED ROJO
int YELLOW=A1;    //LED AMARILLO
int GREEN=A0;     //LED VERDE
int HUMEDAD=A3;   //SENSOR DE HUMEDAD
int VALOR;        //GUARDA EL VALOR DEL SENSOR


void APAGAR() {   //APAGAR LOS TRES LEDS
  analogWrite(RED,0);
  analogWrite(YELLOW,0);
  analogWrite(GREEN,0);
}

void setup() {
  // put your setup code here, to run once:
  pinMode(LED,OUTPUT);      //LED PLACA ARDUINO
  pinMode(BUZZER,OUTPUT);   //PIN TO BUZZER
  Serial.begin(9600);       //VELOCIDAD DE PUERTO SERIE
  digitalWrite(LED,HIGH);   //LED SYSTEM "TURN ON"
}

void loop() {
  // put your main code here, to run repeatedly:
  APAGAR();                 //APAGAR TODOS LOS LEDS
  VALOR=analogRead(HUMEDAD);//LEER EL VALOR DE HUMEDAD
  Serial.print(VALOR);    //ESCRIBIR EN LA COMPUTADORA

  if(VALOR>0 & VALOR<500){//INTENSAMENTE HUMED0
    analogWrite(GREEN,255);    
  }
  if(VALOR>500 & VALOR<800){//POCA HUMEDAD
    analogWrite(YELLOW,255);    
  }
  if(VALOR>800 & VALOR<1024){//AMBIENTE SECO
    analogWrite(RED,255);
    tone(BUZZER,1000,500);
  }    
  
  delay(3000);
}

//+++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++






Para ver el otro tipo de sensor visite este link:
https://nbrobots.blogspot.com/2019/03/sensor-de-humedad-2.html




Les deseo mucho éxito
y sigamos programando!!!

viernes, 4 de enero de 2019

Modulo Buzzer

Hola a todos, aquí les dejo el código y el vídeo para conectar el Modulo Buzzer que es una pequeña bocina para emitir zumbidos. El modulo lo conectaremos al pin #8 de nuestro Arduino UNO para dejarlo conectado y utilizarlo también en las futuras practicas.


// +++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++
// Declaración de las variables
const int BUZZER=8; // pin del BUZZER pasivo

void setup(){
  pinMode(BUZZER,OUTPUT);
}

void loop() {
  //La frecuencia MÍNIMA que puede producir el Arduino es 31Hz.
  //La frecuencia MÁXIMA que puede producir el Arduino es 65,525Hz.

  //tone(BUZZER, 250, 250); //(PIN, HZ ,TIEMPO NOTA)
  //tone(BUZZER, 450, 250); //(PIN, HZ ,TIEMPO NOTA)
  tone(BUZZER, 660, 250); //(PIN, HZ ,TIEMPO NOTA)
  delay(3000);            //Silenciar por un tiempo
}
// +++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++




Les deseo mucho éxito
y sigamos programando!!!


viernes, 21 de diciembre de 2018

CAMBIAR LED AL PUERTO ANALOGICO

Debido a que cada vez crece nuestros componentes que colocamos en el NBROBOT CAR nos vemos en la necesidad de cambiar los LEDs de semaforo y colocarlos en el puerto analogico, aquí les dejo el video y el codigo explicando su funcionamiento.






//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#define LED 13
const int GREEN = A0;     // LED OUTPUT ANALOG
const int YELLOW = A1;    // LED OUTPUT ANALOG
const int RED = A2;       // LED OUTPUT ANALOG
int VARX;

                   
void setup() {
  // put your setup code here, to run once:
  pinMode(LED,OUTPUT);
}


void loop() {
  // put your main code here, to run repeatedl  y:
  
  for(VARX=155;VARX<255;VARX++){  //VARIAR LA INTENSIDAD LUMINOSA
    analogWrite(GREEN,VARX);      //255=HIGH
    analogWrite(YELLOW,VARX);     //0=LOW
    analogWrite(RED,VARX);        //
    delay(100);    
  }
  
  for(VARX=0;VARX<10;VARX++){
    digitalWrite(LED,HIGH);     //ON LED
    analogWrite(GREEN,255);     //ON LED
    analogWrite(YELLOW,255);    //ON LED
    analogWrite(RED,255);       //ON LED
    delay(1000);
    digitalWrite(LED,LOW);
    analogWrite(GREEN,0);       //OFF LED
    analogWrite(YELLOW,0);      //OFF LED
    analogWrite(RED,0);         //OFF LED
    delay(1000);  
  }
  
}

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


Les deseo mucho éxito
y sigamos programando!!!

REPARANDO EL ROBOT JUAN

TUNEAME LA NAVE




























miércoles, 12 de diciembre de 2018

sábado, 1 de diciembre de 2018

SERVOMOTOR

Los pines de nuestro servo se conectaran 
de la siguiente manera:



Código para controlar un Servomotor conectado al Pin número 9


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include <Servo.h>//AÑADIR LIBRERIA
Servo SMOTOR;     //DECLARAR SERVOMOTOR

void setup() {
  // put your setup code here, to run once:
  pinMode(13,OUTPUT);   //LED
  
  SMOTOR.attach(9,600,1500);//CONFIGURAR SERVOMOTOR
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(13,HIGH);//ON LED
  
  SMOTOR.write(0); //GIRAR 0 GRADOS
  delay(2000);
  SMOTOR.write(90); //GIRAR 90 GRADOS

  delay(2000);
  SMOTOR.write(180); //GIRAR 180 GRADOS
  delay(4000);
}  
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++










Les deseo mucho éxito
y
Sigamos Programando!!!

miércoles, 21 de noviembre de 2018

Sensor Ultrasonico

Aquí les dejo el código para su NBRobot usándolo con sensor de Ultrasonido

Recuerden colocar cada cable en su respectivo lugar, ok.

Copiar y pegar en un nuevo archivo, ojo no vayan a duplicar la función SETUP y LOOP
solo debe existir una, y ya están incluidas en este código.


//+++++++++++++++++++++++++++++++++++++++++++++

#define ECO 12              //Pin eco del Sensor
#define TRIGER 11       //Pin de disparo del Sensor
#define RED 10
#define YELLOW 9
#define GREEN 8
long DURACION, DISTANCIA;


void setup() {
  // put your setup code here, to run once:
  pinMode(ECO,INPUT);         //ENTRADA DE ULTRASONIDO=ECO
  pinMode(TRIGER,OUTPUT);     //PIN DE DISPARO
  digitalWrite(TRIGER,LOW);   //DISPARO =LOW =0 VOLTS
  pinMode(RED,OUTPUT);        //LED RED
  pinMode(YELLOW,OUTPUT);     //LED YELLOW
  pinMode(GREEN,OUTPUT);      //LED GREEN
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:

  digitalWrite(TRIGER,HIGH);  //ON DISPARO
  delayMicroseconds(10);      //DELAY 10Ms
  digitalWrite(TRIGER,LOW);   //OFF DISPARO

  DURACION=pulseIn(ECO,HIGH); 
  DISTANCIA=(DURACION/2)/29;
  Serial.print(DISTANCIA);
  Serial.println("cm");



  if(DISTANCIA<20){         //POSIBLE COLISION
    digitalWrite(RED,HIGH); //ON RED   
    digitalWrite(YELLOW,LOW);
    digitalWrite(GREEN,LOW);
  }

  if(DISTANCIA>20 && DISTANCIA<60){//PRECAUSION
    digitalWrite(RED,LOW);    
    digitalWrite(YELLOW,HIGH);    //ON YELLOW
    digitalWrite(GREEN,LOW);
  }

  if(DISTANCIA>60){           //NO PROBLEM
    digitalWrite(RED,LOW);    
    digitalWrite(YELLOW,LOW);
    digitalWrite(GREEN,HIGH); //ON GREEN
  }

  delay(500);                 //ESPERA 0.5 SEGUNDOS

}

//+++++++++++++++++++++++++++++++++++++++++++++
OJO: si dan click en la pantalla del Software Arduino donde dice Monitor Serie y dejan conectado el cable USB a su placa
podrán ver la "medida de la distancias en centímetros" de los objetos que estén frente al sensor. Ok.  :)



Les deseo mucho éxito
y sigamos programando!!!

Transformación del Samybot

Les deseo mucho éxito y sigamos programando!!!