Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //If you found my video helpful, please SUBSCRIBE: https://www.youtube.com/c/CuriousScientist?sub_confirmation=1
- //The code belongs to this tutorial video: https://youtu.be/97yzEBo4DZo
- //Please visit https://curiousscientist.tech
- //16x2 LCD
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x27, 16, 2); //A4 - SDA, A5 - SCK (SCL)
- //Pins
- const byte Analog_X_pin = A0; //x-axis readings
- const byte Analog_Y_pin = A1; //y-axis readings
- const byte Analog_R_pin = A2; //R-axis readings
- //const byte Analog_Button_pin = 2; //attachinterrupt compatible pin
- //Variables
- int Analog_X = 0; //x-axis value
- int Analog_Y = 0; //y-axis value
- int Analog_R = 0; //R-axis value
- //bool Analog_Button = false; //button status
- float timeNow; //timer for printing on the LCD
- void setup()
- {
- //SERIAL
- //Serial.begin(9600);
- //-----------------
- //LCD
- lcd.begin();
- lcd.setCursor(0,0); //Defining position to write from first row,first column .
- lcd.print("Analog joystick");
- lcd.setCursor(0,1);
- lcd.print("Demonstration"); //You can write 16 Characters per line .
- //
- delay(3000); //wait 3 sec
- PrintLCD();
- //----------------------------------------------------------------------------
- //PINS
- pinMode(Analog_X_pin, INPUT);
- pinMode(Analog_Y_pin, INPUT);
- pinMode(Analog_R_pin, INPUT);
- //pinMode(Analog_Button_pin, INPUT_PULLUP);
- //attachInterrupt(digitalPinToInterrupt(Analog_Button_pin), ButtonPressed ,FALLING);
- //----------------------------------------------------------------------------
- timeNow = millis();
- }
- void loop()
- {
- ReadAnalog(); //reading x,y, and r.
- if(millis() - timeNow > 200) //updating the LCD every 200 ms
- {
- UpdateLCD();
- timeNow = millis(); //resetting timer
- }
- }
- void ReadAnalog()
- {
- Analog_X = analogRead(Analog_X_pin);
- delay(10); //allowing a little time between two readings
- Analog_Y = analogRead(Analog_Y_pin);
- delay(10); //allowing a little time between two readings
- Analog_R = analogRead(Analog_R_pin);
- }
- void PrintLCD()
- {
- //printing on the LCD - these are permanent
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print(" X Y R ");
- }
- void UpdateLCD()
- {
- //We only update the values that are changing
- lcd.setCursor(0,1);
- lcd.print(" ");
- lcd.setCursor(0,1);
- lcd.print(Analog_X);
- lcd.setCursor(5,1);
- lcd.print(" ");
- lcd.setCursor(5,1);
- lcd.print(Analog_Y);
- lcd.setCursor(11,1);
- lcd.print(" ");
- lcd.setCursor(11,1);
- lcd.print(Analog_R);//Print the value
- }
- //Not used in this code, but I keep it in the code, so you can add a button easily. Just uncomment the related parts.
- void ButtonPressed()
- {
- Analog_Button = true; //flip the variable
- }
Add Comment
Please, Sign In to add comment