나는 Arduino에 대한 코드를 작성하고 있습니다. 그것은 무엇을해야합니까 :모니터 Arduino에서 6 아날로그 입력 핀
그것은 6 개의 아날로그 입력을 모니터링해야하며, 그 중 어떤 것에도 활동이 있으면 직렬 연결을 통해 (핀의 활성 핀 + 값의 수)를 보냅니다.
직렬 연결의 반대쪽에서 다른 프로그램이 주어진 정보를 결정합니다.
최선의 방법은?
나는 Arduino에 대한 코드를 작성하고 있습니다. 그것은 무엇을해야합니까 :모니터 Arduino에서 6 아날로그 입력 핀
그것은 6 개의 아날로그 입력을 모니터링해야하며, 그 중 어떤 것에도 활동이 있으면 직렬 연결을 통해 (핀의 활성 핀 + 값의 수)를 보냅니다.
직렬 연결의 반대쪽에서 다른 프로그램이 주어진 정보를 결정합니다.
최선의 방법은?
한 용액은 다음과 같이 될 수있다 :
int analogPin1 = 1;
int analogPin2 = 2;
int analogPin3 = 3;
int analogPin4 = 4;
int analogPin5 = 5;
int analogPin6 = 6;
int val = 0;
byte sendAnalog=0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
val=analogRead(analogPin1);
if(val>0){
Serial.print("1");
sendAnalog=val*0.24926697;
Serial.print(sendAnalog,BYTE);
}
val=analogRead(analogPin2);
if(val>0){
Serial.print("2");
sendAnalog=val*0.24926697;
Serial.print(sendAnalog,BYTE);
}
val=analogRead(analogPin3);
if(val>0){
Serial.print("3");
sendAnalog=val*0.24926697;
Serial.print(sendAnalog,BYTE);
}
val=analogRead(analogPin4);
if(val>0){
Serial.print("4");
sendAnalog=val*0.24926697;
Serial.print(sendAnalog,BYTE);
}
}
AD 변환기는 10 개 비트 값을 저장한다. AD 변환기의 최대 값은 1023입니다 ([2^10-1]). 시리얼 통신용 모듈은 데이터 바이트를 전송하므로 1023에서 255 사이의 스케일이 필요합니다. 수식은 (255/1023) * currentAnalogValue (따라서 0.249266 * currentAnalogValue)입니다. 귀하의 컴퓨터 응용 프로그램에서 원래의 값을 받기 위해서는 역 방정식 1023/255 * receivedByte가 필요합니다.
텍스트 기반 인터페이스를 사용하는 경우 Arduino와 다른 장치 (여기서는 PC라고 가정) 사이의 통신은 가장 간단하고 디버깅하기가 가장 쉽습니다.
void setup() {
Serial.begin(9600);
}
void loop() {
for (int i = 0; i < 6; i++) {
Serial.print(i);
Serial.print(":");
Serial.println(analogRead(i));
}
}
이 연속적 아날로그 포트로부터 값을 판독하고 (텍스트)로 보낼 것이다 이런 : 예
0:456
1:26
2:0
3:1023
4:321
5:1010
포트는 0~5의 숫자가된다 다음 콜론 (:
) 문자는 구분 기호로 전송 된 다음 아날로그 값 (0에서 1023까지)으로 전송됩니다.
이것은 무기한 반복되지만, 활동이있는 경우에만 데이터를 보냅니다. 좀 더 정교한 것이 필요하다면 '활동'을 고려하십시오 (예를 들어, 마지막으로 읽은 이후에 아날로그 값이 변경된 경우에만 데이터를 보내고 싶을 수도 있습니다).
또한 코드는 어떤 핀이 HIGH 또는 LOW인지 알려주는 "메시지"에 대해 직렬 포트를 청취 할 수 있어야합니다. 즉, 직렬 포트를 듣고 직렬 포트에 씁니다. 두 작업은 어떻게 동시에 작동 할 수 있습니까? – user1165574
나는이 다른 질문에서 이미 다루었다고 생각합니다 : http://stackoverflow.com/questions/8996675/arduino-code-to-write-and-send-at-the-same-time-simultaneously have not have 당신? –
네, 아직 답장을받지 못했습니다 – user1165574