martes, 20 de enero de 2015

Arduino Display LCD + KeyPad Shield



PinFunction
Analog 0Button (select, up, right, down and left)
Digital 4DB4
Digital 5DB5
Digital 6DB6
Digital 7DB7
Digital 8RS (Data or Signal Display Selection)
Digital 9Enable
Digital 10Backlit Control

Example Code




 
//Sample using LiquidCrystal library
#include <LiquidCrystal.h>

/*******************************************************

This program will test the LCD panel and the buttons
Mark Bramwell, July 2010
Josep Crehuet, 20.01.2015
********************************************************/

// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// define some values used by the panel and buttons
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

// read the buttons
int read_LCD_buttons()
{
 adc_key_in = analogRead(0);      // read the value from the sensor 
 //
 Serial.println(adc_key_in);      // See the button values
 // 
 if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
 // 
 if (adc_key_in < 50)   return btnRIGHT;  
 if (adc_key_in < 150)  return btnUP; 
 if (adc_key_in < 350)  return btnDOWN; 
 if (adc_key_in < 550)  return btnLEFT; 
 if (adc_key_in < 750)  return btnSELECT;  

 return btnNONE;  // when all others fail, return this...
}

void setup()
{
 Serial.begin(9600);
 lcd.begin(16, 2);              // start the library
 lcd.setCursor(0,0);
 lcd.print("Push any button"); // print a simple message
}
 
void loop()
{
 lcd.setCursor(9,1);            // move cursor to second line "1" and 9 spaces over
 lcd.print(millis()/1000);      // display seconds elapsed since power-up


 lcd.setCursor(0,1);            // move to the begining of the second line
 lcd_key = read_LCD_buttons();  // read the buttons

 switch (lcd_key)               // depending on which button was pushed, we perform an action
 {
   case btnRIGHT:
     {
     lcd.print("RIGHT ");
     break;
     }
   case btnLEFT:
     {
     lcd.print("LEFT   ");
     break;
     }
   case btnUP:
     {
     lcd.print("UP    ");
     break;
     }
   case btnDOWN:
     {
     lcd.print("DOWN  ");
     break;
     }
   case btnSELECT:
     {
     lcd.print("SELECT");
     break;
     }
     case btnNONE:
     {
     lcd.print("NONE  ");
     break;
     }
 }

}

martes, 7 de octubre de 2014

Sensor de Distancia US-020

  1. //SENSOR DE DISTANCIA AMB DISPLAY
  2. //
  3. //http://zygzax.com/webproyectos/websensorus-100/
  4. #include <LiquidCrystal.h>
  5. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  6. const int trigger=10;
  7. const int echo=13;
  8. float distance;
  9. void setup(){
  10.   Serial.begin(9600);
  11.   pinMode(trigger,OUTPUT);
  12.   pinMode(echo,INPUT);
  13.   lcd.begin(16,2);
  14. }
  15. void loop(){
  16. //Inicializamos el sensor
  17.   digitalWrite(trigger,LOW);
  18.   delayMicroseconds(5);
  19. // Comenzamos las mediciones
  20. // Enviamos una señal activando la salida trigger durante 10 microsegundos
  21.   digitalWrite(trigger,HIGH);
  22.   delayMicroseconds(10);
  23.   digitalWrite(trigger,LOW);
  24. // Adquirimos los datos y convertimos la medida a metros
  25.  distance=pulseIn(echo,HIGH); // Medimos el ancho del pulso
  26.                               // (Cuando la lectura del pin sea HIGH medira
  27.                               // el tiempo que transcurre hasta que sea LOW
  28.  distance=distance*0.0001657;
  29. // Enviamos los datos medidos a traves del puerto serie y al display LCD
  30.   Serial.println(distance);
  31.   lcd.setCursor(0,0);
  32.   lcd.print(distance);
  33.   delay(100);
  34. }

lunes, 23 de junio de 2014

Arduino - Motor Paso a Paso Bipolar

Motor Paso a Paso Bipolar

Codigo ejemplo:

 int Pin0 = 8;
 int Pin1 = 9;
 int Pin2 = 10;
 int Pin3 = 11;
 int _step = 0;
 int pases=0;
 boolean dir = false;// change the direction of the motor
 void setup()
 {
  pinMode(Pin0, OUTPUT); 
  pinMode(Pin1, OUTPUT); 
  pinMode(Pin2, OUTPUT); 
  pinMode(Pin3, OUTPUT); 
  Serial.begin(9600);
 }
   void loop()
 {
   for(pases=0;pases<4075;pases++){
     pas();
     delay(1);  // change this delay to control the speed of your stepper, delay to 100 you can see the signal LEDs blinking.
   }
   delay(500);
 }

 void pas()
 {
   switch(_step){
    case 0:
      digitalWrite(Pin0, LOW); 
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, HIGH);
    break; 
    case 1:
      digitalWrite(Pin0, LOW); 
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, HIGH);
      digitalWrite(Pin3, HIGH);
    break; 
    case 2:
      digitalWrite(Pin0, LOW); 
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, HIGH);
      digitalWrite(Pin3, LOW);
    break; 
    case 3:
      digitalWrite(Pin0, LOW); 
      digitalWrite(Pin1, HIGH);
      digitalWrite(Pin2, HIGH);
      digitalWrite(Pin3, LOW);
    break; 
    case 4:
      digitalWrite(Pin0, LOW); 
      digitalWrite(Pin1, HIGH);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, LOW);
    break; 
    case 5:
      digitalWrite(Pin0, HIGH); 
      digitalWrite(Pin1, HIGH);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, LOW);
    break; 
      case 6:
      digitalWrite(Pin0, HIGH); 
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, LOW);
    break; 
    case 7:
      digitalWrite(Pin0, HIGH); 
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, HIGH);
    break; 
    default:
      digitalWrite(Pin0, LOW); 
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, LOW);
    break; 
  }
  if(dir){     _step++; ;  }else{     _step--;   }
  if(_step>7){     _step=0;   }
  if(_step<0){     _step=7;   }
 }