๐ฉ๐ป IoT (Embedded)/Arduino
[์๋์ฐจ ๋ทํธ์ LCDํ์ผ๋ก ์ํฉ ์ ๋ฌํ๊ธฐ 6] ์กฐ์ด์คํฑ x, y 4๋ถํ ํด์ led ๋ถ ์ผ๊ธฐ
์ง์ง์ํ์นด
2023. 11. 10. 12:17
728x90
๋ฐ์ํ
โญ ์กฐ์ด์คํฑ x, y
- X์ถ์ ์ฝ๊ณ X์ถ์ ๊ฐ์ ๋ง์กฑํ๋ ์ผ์ชฝ/์ค๋ฅธ์ชฝ์ด ๊ฒฐ์ ๋๋ฉด์ Y์ถ์ ๋ฌด์ํ๊ณ ๋์ด๊ฐ๊ฒ ๋ฉ๋๋ค.
- ๊ทธ๋์ X์ถ์ ๋ฐฉํฅํค๋ฅผ ๊ตฌํ๊ณ Y์ถ์ ๋ฐฉํฅํค๋ฅผ ๊ตฌํ๋ ์์ ๋ฐ๋ก if๋ฌธ์ ๋ถ๋ฆฌํด์ ์ฝ๋ฉํ ๊ฒ
- AXIS_X ๊ธฐ์ค ์ ํธ๋ก ๋ณด๋ฉด ๊ธฐ์ค ์ ํธ ๊ฐ์์ +, - ๊ฐ์ธ ๋์ค ํ๋์ํ๋ง ์กด์ฌํ๊ธฐ ๋๋ฌธ.
- ๋์ ์ค๋ฅธ์ชฝ, ์ผ์ชฝ์ด ๋์ฌ ์ ์์ต๋๋ค.
- ๊ทธ๋์ if~else if๋ฌธ์ ์ฌ์ฉ
const int AXIS_X = A0;
const int AXIS_Y = A1;
const int SW_P = 3;
void setup() {
Serial.begin(9600);
pinMode(SW_P,INPUT_PULLUP);
}
void loop() {
//X์ถ ๋ฐฉํฅ๊ฐ
if(analogRead(AXIS_X)<=300){
Serial.println('a');
}
else if(analogRead(AXIS_X)>=700){
Serial.println('d');
}
//Y์ถ ๋ฐฉํฅ๊ฐ
if(analogRead(AXIS_Y)<=300){
Serial.println('w');
}
else if(analogRead(AXIS_Y)>=700){
Serial.println('s');
}
delay(20);
}
โญ ์กฐ์ด์คํฑ x, y 4๋ถํ ํด์ led ๋ถ ์ผ๊ธฐ
// mytest3.ino
// LiquidCrystal ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ
#include <string.h>
#include <stdio.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// ์กฐ์ด์คํฑ ์ด๋์ ๋ฒํผ์ด ๋๋ฅด๋ ๊ฑธ ์
๋ ฅ๋ฐ๊ธฐ ์ํด ์ ์ธ
const int buttonPin2 = 2;
const int buttonPin3 = 3;
const int buttonPin4 = 4;
const int buttonPin5 = 5;
// lcd ๊ฐ์ฒด ์ ์ธ
LiquidCrystal_I2C lcd(0x27, 16, 2); // ์ฃผ์, ์ด, ํ
// led ๊ฐ์ฒด ์ ์ธ
int GREEN = 13;
int RED = 11;
int BLUE = 9;
void setup() {
// ์๋ฆฌ์ผ ํต์ ์ ์์ํ๋ฉฐ, ํต์ ์๋๋ 9600
Serial.begin(9600);
pinMode(buttonPin2, INPUT_PULLUP );
pinMode(buttonPin3, INPUT_PULLUP );
pinMode(buttonPin4, INPUT_PULLUP );
pinMode(buttonPin5, INPUT_PULLUP );
lcd.init(); // LCD ์ด๊ธฐํ
// Print a message to the LCD
lcd.backlight(); // LCD ๋ฐฑ๋ผ์ดํธ ์ผ๊ธฐ
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
}
// LCD ์ถ๋ ฅ
void LCDprint(String data) {
lcd.setCursor(0, 0); // 1๋ฒ์งธ, 1๋ผ์ธ
lcd.print(data);
delay(1500);
lcd.clear(); // ๊ธ์๋ฅผ ๋ชจ๋ ์ง์๋ผ
}
void loop() {
if(Serial.available()) {
char data[16] = {0,};
char buf;
for (int i = 0; i < 16; i++) {
buf = Serial.read();
//Serial.print("hi");
data[i] = buf;
}
//Serial.print(data);
LCDprint(data);
delay(500);
}
int X = analogRead(0); // ๋ณ์ X์ ์๋ ๋ก๊ทธ 0๋ฒํ์ ์
๋ ฅ๋๋ ์ ํธ๋ฅผ ๋์
int Y = analogRead(1); // ๋ณ์ Y์ ์๋ ๋ก๊ทธ 1๋ฒํ์ ์
๋ ฅ๋๋ ์ ํธ๋ฅผ ๋์
int buttonValue2 = digitalRead(2); // buttonValue๊ฐ ์ ์ธ
int buttonValue3 = digitalRead(3);
int buttonValue4 = digitalRead(4);
int buttonValue5 = digitalRead(5);
if (buttonValue2 == LOW) { // if๋ฌธ์ ์ด์ฉํ์ฌ ๊ฐ ๋ฒํผ์ด ๋๋ฆฌ๋ฉด ์ํ๋ฒณ์ด ์๋ฆฌ์ผ๋ชจ๋ํฐ์ ์ถ๋ ฅ๋๋๋ก ์ค์
String data = "front car!";
LCDprint(data);
}
if (buttonValue3 == LOW) {
String data = "front animal!";
LCDprint(data);
}
if (buttonValue4 == LOW) {
String data = "baby in car";
LCDprint(data);
}
if (buttonValue5 == LOW) {
String data = "broken car";
LCDprint(data);
}
Serial.print(X);
Serial.print(", ");
Serial.println(Y);
if(X < 495) {
// ์ผ์ชฝ
if(Y < 515) {
Serial.println('1');
digitalWrite(GREEN, HIGH);
digitalWrite(BLUE, LOW);
digitalWrite(RED, HIGH); //๋นจ๊ฐ๋ถ ๋๊ธฐ
}
else if(Y >= 515) {
Serial.println('1');
digitalWrite(GREEN, HIGH);
digitalWrite(BLUE, HIGH);
digitalWrite(RED, LOW);
}
}
else if(X > 495) {
// ์ค๋ฅธ์ชฝ
if(Y < 515) {
Serial.println('2');
digitalWrite(GREEN, HIGH);
digitalWrite(BLUE, LOW);
digitalWrite(RED, HIGH);
}
else if(Y >= 515) {
Serial.println('2');
digitalWrite(GREEN, HIGH);
digitalWrite(BLUE, HIGH);
digitalWrite(RED, LOW);
}
}
else if(X == 495) {
// ํ์ง
if(Y < 515) {
Serial.println('4');
digitalWrite(GREEN, LOW);
digitalWrite(BLUE, LOW);
digitalWrite(RED, HIGH);
}
// ์ ์ง
else if(Y > 515) {
Serial.println('3');
digitalWrite(GREEN, LOW);
digitalWrite(BLUE, HIGH);
digitalWrite(RED, LOW);
}
}
if (X == 495) {
if (Y == 515) {
digitalWrite(GREEN, LOW);
digitalWrite(BLUE, LOW);
digitalWrite(RED, LOW);
}
}
delay(1000);
}
728x90
๋ฐ์ํ