BASIC4MCU | 질문게시판 | 아두이노 깨짐현상
페이지 정보
작성자 ginnie92 작성일2020-12-28 15:15 조회9,305회 댓글3건본문
안녕하세요~~
아두이노 프로그램 실행도중 일정시간이지나면 시리얼모니터에 데이터가 깨져저 나옵니다
해결방안좀 부탁드립니다ㅠㅠ
댓글 3
조회수 9,305master님의 댓글
master 작성일전체 소스코드 첨부하세요
ginnie92님의 댓글
ginnie92 작성일
#include <LiquidCrystal.h>
#include <SPI.h>
#include <SD.h>
LiquidCrystal lcd(47,45,43,46,44,42);
//SD
File myFile;
//sit
int En0 = 34;
int En1 = 36;
int S0 = 38;
int S1 = 40;
int S2 = 42;
int S3 = 41;
int ADC_pin = A7;
//String sit_data;
bool datacomplete2 = false;
int sensor[32] ={0,};
long previousMillis = 0;
long interval = 1000;
String a="",b="",c="",d="",e="",f="",g="",h="",i="",j="",k="",l="",m="",n="",o="",p="",q="",r="",s="",t="",u="",v="",w="",x="",y="",z="",a2="",b2="",c2="",d2="",e2="",f2="";
//button
int key1 = 5;
int key2 = 4;
int key3 = 3;
int key4 = 2;
int key5 = 22;
int key6 = 30;
int button_state_1 = 0;
int button_state_2 = 0;
int button_state_3 = 0;
int button_state_4 = 0;
int button_state_5 = 0;
int button_state_6 = 0;
int flag = 0;
int posit = 0;
int led = 7;
int led2 = 6;
void setup() {
Serial.begin(115200);
lcd.begin(16,2);
pinMode(led,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(key1,INPUT_PULLUP);
pinMode(key2,INPUT_PULLUP);
pinMode(key3,INPUT_PULLUP);
pinMode(key4,INPUT_PULLUP);
pinMode(key5,INPUT_PULLUP);
pinMode(key6,INPUT_PULLUP);
pinMode(En0, OUTPUT);
pinMode(En1, OUTPUT);
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
if (!SD.begin(33)) { // SD카드 모듈을 초기화합니다.
Serial.println("fail"); // SD카드 모듈 초기화에 실패하면 에러를 출력합니다.
while (1);
}
Serial.println("done");
myFile = SD.open("test.csv", FILE_WRITE);
}
void loop() {
if(!SD.begin(33)){
digitalWrite(led2,LOW);
}
else{
digitalWrite(led2,HIGH);
}
unsigned long curretMillis = millis();
if(curretMillis - previousMillis > interval){
previousMillis = curretMillis;
sit_seonsor();
Serial.print(a);
Serial.print("\t");
Serial.print(b);
Serial.print("\t");
Serial.print(c);
Serial.print("\t");
Serial.print(d);
Serial.print("\t");
Serial.print(e);
Serial.print("\t");
Serial.print(f);
Serial.print("\t");
Serial.print(g);
Serial.print("\t");
Serial.print(h);
Serial.print("\t");
Serial.print(i);
Serial.print("\t");
Serial.print(j);
Serial.print("\t");
Serial.print(k);
Serial.print("\t");
Serial.print(l);
Serial.print("\t");
Serial.print(m);
Serial.print("\t");
Serial.print(n);
Serial.print("\t");
Serial.print(o);
Serial.print("\t");
Serial.print(p);
Serial.print("\t");
Serial.print(q);
Serial.print("\t");
Serial.print(r);
Serial.print("\t");
Serial.print(s);
Serial.print("\t");
Serial.print(t);
Serial.print("\t");
Serial.print(u);
Serial.print("\t");
Serial.print(v);
Serial.print("\t");
Serial.print(w);
Serial.print("\t");
Serial.print(x);
Serial.print("\t");
Serial.print(y);
Serial.print("\t");
Serial.print(z);
Serial.print("\t");
Serial.print(a2);
Serial.print("\t");
Serial.print(b2);
Serial.print("\t");
Serial.print(c2);
Serial.print("\t");
Serial.print(d2);
Serial.print("\t");
Serial.print(e2);
Serial.print("\t");
Serial.print(f2);
Serial.print("\t");
Serial.println(posit);
}
button_read();
button_grade();
}
void sit_seonsor(){
a += ((String)readMux(0));
a += " ";
b += ((String)readMux(1));
b += " ";
c += ((String)readMux(2));
c += " ";
d += ((String)readMux(3));
d += " ";
e += ((String)readMux(4));
e += " ";
f += ((String)readMux(5));
f += " ";
g += ((String)readMux(6));
g += " ";
h += ((String)readMux(7));
h += " ";
i += ((String)readMux(8));
i += " ";
j += ((String)readMux(9));
j += " ";
k += ((String)readMux(10));
k += " ";
l += ((String)readMux(11));
l += " ";
m += ((String)readMux(12));
m += " ";
n += ((String)readMux(13));
n += " ";
o += ((String)readMux(14));
o += " ";
p += ((String)readMux(15));
p += " ";
q += ((String)readMux(16));
q += " ";
r += ((String)readMux(17));
r += " ";
s += ((String)readMux(18));
s += " ";
t += ((String)readMux(19));
t += " ";
u += ((String)readMux(20));
u += " ";
v += ((String)readMux(21));
v += " ";
w += ((String)readMux(22));
w += " ";
x += ((String)readMux(23));
x += " ";
y += ((String)readMux(24));
y += " ";
z += ((String)readMux(25));
z += " ";
a2 += ((String)readMux(26));
a2 += " ";
b2 = ((String)readMux(27));
b2 += " ";
c2 += ((String)readMux(28));
c2 += " ";
d2 += ((String)readMux(29));
d2 += " ";
e2 += ((String)readMux(30));
e2 += " ";
f2 += ((String)readMux(31));
f2 += " ";
delay(300);
datacomplete2 = true;
}
int readMux(int channel){
int controlPin[] = {S0,S1,S2,S3,En0,En1};
int muxChannel[32][6]={
{0,0,0,0,0,1}, //channel 0
{0,0,0,1,0,1}, //channel 1
{0,0,1,0,0,1}, //channel 2
{0,0,1,1,0,1}, //channel 3
{0,1,0,0,0,1}, //channel 4
{0,1,0,1,0,1}, //channel 5
{0,1,1,0,0,1}, //channel 6
{0,1,1,1,0,1}, //channel 7
{1,0,0,0,0,1}, //channel 8
{1,0,0,1,0,1}, //channel 9
{1,0,1,0,0,1}, //channel 10
{1,0,1,1,0,1}, //channel 11
{1,1,0,0,0,1}, //channel 12
{1,1,0,1,0,1}, //channel 13
{1,1,1,0,0,1}, //channel 14
{1,1,1,1,0,1}, //channel 15
{0,0,0,0,1,0}, //channel 16
{0,0,0,1,1,0}, //channel 17
{0,0,1,0,1,0}, //channel 18
{0,0,1,1,1,0}, //channel 19
{0,1,0,0,1,0}, //channel 20
{0,1,0,1,1,0}, //channel 21
{0,1,1,0,1,0}, //channel 22
{0,1,1,1,1,0}, //channel 23
{1,0,0,0,1,0}, //channel 24
{1,0,0,1,1,0}, //channel 25
{1,0,1,0,1,0}, //channel 26
{1,0,1,1,1,0}, //channel 27
{1,1,0,0,1,0}, //channel 28
{1,1,0,1,1,0}, //channel 29
{1,1,1,0,1,0}, //channel 30
{1,1,1,1,1,0} //channel 31
};
for(int i = 0; i < 6; i ++){
digitalWrite(controlPin[i], muxChannel[channel][i]);
}
int adc_value = analogRead(ADC_pin);
return adc_value;
}
void button_read(){
button_state_1 = digitalRead(key1);
button_state_2 = digitalRead(key2);
button_state_3 = digitalRead(key3);
button_state_4 = digitalRead(key4);
button_state_5 = digitalRead(key5);
button_state_6 = digitalRead(key6);
// 앉은 위치
if (button_state_1 == 0 || button_state_2 == 0 || button_state_3 == 0 || button_state_4 == 0 || button_state_5 == 0) {
if(flag == 1){
flag = 0;
}
else if(flag == 0){
flag = 1;
}
if (flag == 0){
digitalWrite(led,HIGH);
}
else if (flag == 0){
digitalWrite(led,LOW);
}
}
if (digitalRead(led) == HIGH){
if (myFile){
lcd.setCursor(0,0);
lcd.print("Position ");
lcd.setCursor(0,1);
lcd.print(posit);
lcd.setCursor(1,1);
lcd.print(" ");
}
}
// save 버튼
if (button_state_6 == 0) {
Serial.print(a);
Serial.print("\t");
Serial.print(b);
Serial.print("\t");
Serial.print(c);
Serial.print("\t");
Serial.print(d);
Serial.print("\t");
Serial.print(e);
Serial.print("\t");
Serial.print(f);
Serial.print("\t");
Serial.print(g);
Serial.print("\t");
Serial.print(h);
Serial.print("\t");
Serial.print(i);
Serial.print("\t");
Serial.print(j);
Serial.print("\t");
Serial.print(k);
Serial.print("\t");
Serial.print(l);
Serial.print("\t");
Serial.print(m);
Serial.print("\t");
Serial.print(n);
Serial.print("\t");
Serial.print(o);
Serial.print("\t");
Serial.print(p);
Serial.print("\t");
Serial.print(q);
Serial.print("\t");
Serial.print(r);
Serial.print("\t");
Serial.print(s);
Serial.print("\t");
Serial.print(t);
Serial.print("\t");
Serial.print(u);
Serial.print("\t");
Serial.print(v);
Serial.print("\t");
Serial.print(w);
Serial.print("\t");
Serial.print(x);
Serial.print("\t");
Serial.print(y);
Serial.print("\t");
Serial.print(z);
Serial.print("\t");
Serial.print(a2);
Serial.print("\t");
Serial.print(b2);
Serial.print("\t");
Serial.print(c2);
Serial.print("\t");
Serial.print(d2);
Serial.print("\t");
Serial.print(e2);
Serial.print("\t");
Serial.print(f2);
Serial.print("\t");
Serial.println(posit);
myFile.print(a);
myFile.print(",");
myFile.print(b);
myFile.print(",");
myFile.print(c);
myFile.print(",");
myFile.print(d);
myFile.print(",");
myFile.print(e);
myFile.print(",");
myFile.print(f);
myFile.print(",");
myFile.print(g);
myFile.print(",");
myFile.print(h);
myFile.print(",");
myFile.print(i);
myFile.print(",");
myFile.print(j);
myFile.print(",");
myFile.print(k);
myFile.print(",");
myFile.print(l);
myFile.print(",");
myFile.print(m);
myFile.print(",");
myFile.print(n);
myFile.print(",");
myFile.print(o);
myFile.print(",");
myFile.print(p);
myFile.print(",");
myFile.print(q);
myFile.print(",");
myFile.print(r);
myFile.print(",");
myFile.print(s);
myFile.print(",");
myFile.print(t);
myFile.print(",");
myFile.print(u);
myFile.print(",");
myFile.print(v);
myFile.print(",");
myFile.print(w);
myFile.print(",");
myFile.print(x);
myFile.print(",");
myFile.print(y);
myFile.print(",");
myFile.print(z);
myFile.print(",");
myFile.print(a2);
myFile.print(",");
myFile.print(b2);
myFile.print(",");
myFile.print(c2);
myFile.print(",");
myFile.print(d2);
myFile.print(",");
myFile.print(e2);
myFile.print(",");
myFile.print(f2);
myFile.print(",");
myFile.println(posit);
myFile.close();
lcd.clear();
digitalWrite(led,LOW);
lcd.setCursor(0,0);
lcd.print("Saved ");
lcd.setCursor(0,1);
lcd.print(" ");
}
// 전원 들어왔을때
if(digitalRead(led) == LOW){
lcd.setCursor(0,0);
lcd.print("ON ");
lcd.setCursor(0,1);
lcd.print("Select Position ");
}
else{
}
}
void button_grade(){
if (button_state_1 == 0){
posit = 1; //엉덩이를 뺀 자세
}
else if (button_state_2 == 0){
posit = 2; // 무릎이 골반보다 낮음
}
else if (button_state_3 == 0){
posit = 3; // 다리 꼬고 앉기
}
else if (button_state_4 == 0){
posit = 4; // 다리 벌려 앉기
}
else if (button_state_5 == 0){
posit = 5; // 좌우 불균형
}
else{
}
}
master님의 댓글
master 작성일
Serial.println(posit);
마지막에 라인피드를 출력하고 있는데 시리얼모니터에는 라인피드가 보이지 않는군요?