sunu icon

myArduinoUno328pAVR combined_template

sunu | PRO | 10/09/13 08:50:17 AM UTC | 0 ⭐ | 562 👁️ | Never ⏰ | []
C |

4.4 KB

|

None

|

0 👍

/

0 👎

// Do not remove the include below
// Untuk eclipse IDE
#include "unoTemplate.h"
//-----------------------------------------------------------------
/*
//The setup function is called once at startup of the sketch
//Bare minimum Arduino sketch:
 
void setup()
{
// Add your initialization code here
}
 
// The loop function is called in an endless loop
void loop()
{
//Add your repeated code here
}
*/
 
//-----------------------------------------------------------------
 
/*  //Untuk AVR
    //avr-gcc -Wall  -g -c "%f"
    //avr-gcc -Wall  -g -o "%e" "%f"
 
 
    #define __AVR_ATmega328P__
 
    #ifndef F_CPU
       #define F_CPU 16000000UL
    #endif
 
    #include <avr/io.h>
    #include <util/delay.h>
 
    int main(void)
    {
            return 0;
    }
*/
//-----------------------------------------------------------------
 
 
 
    //Sample using LiquidCrystal library
    #include <LiquidCrystal.h>
 
    /*******************************************************
 
    This program will test the LCD panel and the buttons
    Mark Bramwell, July 2010
 
    ********************************************************/
    /*
    Analog 0    Button (select, up, right, down and left)
    Digital 4   DB4
    Digital 5   DB5
    Digital 6   DB6
    Digital 7   DB7
    Digital 8   RS (Data or Signal Display Selection)
    Digital 9   Enable
    Digital 10  Backlit Control
    */
    // 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
 
    int freeRam ();
 
    // read the buttons
    int read_LCD_buttons()
    {
     adc_key_in = analogRead(0);      // read the value from the sensor
     // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
     // we add approx 50 to those values and check to see if we are close
     if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
     // For V1.1 us this threshold
     /*
     if (adc_key_in < 50)   return btnRIGHT;
     if (adc_key_in < 250)  return btnUP;
     if (adc_key_in < 450)  return btnDOWN;
     if (adc_key_in < 650)  return btnLEFT;
     if (adc_key_in < 850)  return btnSELECT;
     */
 
     // For V1.0 comment the other threshold and use the one below:
 
     if (adc_key_in < 50)   return btnRIGHT;
     if (adc_key_in < 195)  return btnUP;
     if (adc_key_in < 380)  return btnDOWN;
     if (adc_key_in < 555)  return btnLEFT;
     if (adc_key_in < 790)  return btnSELECT;
 
 
     return btnNONE;  // when all others fail, return this...
    }
 
    void setup()
    {
     //lcd.begin(16, 2);              // start the library
     //lcd.setCursor(0,0);
 
     Serial.begin(9600);
     Serial.println("\n[memCheck]");
     Serial.println(freeRam());
 
     //lcd.print("Push the buttons"); // print a simple message
     delay(500);
 
    }
 
    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;
         }
     }//endof switch
 
 
 
 
    }//end of loop function
 
    // freeRam function credit:http://jeelabs.org/2011/05/22/atmega-memory-use/
    int freeRam () {
      extern int __heap_start, *__brkval;
      int v;
      return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
    }

Comments