이 arduino 코드 나 arduino에는 문제가되지 않을지 모르지만, 실제로 틀린 것이 무엇인지 알 수 없기 때문에 여기에 올릴 것입니다.Arduino 메가에서 컴퓨터로 시리얼 값을 바꾸면
저는이 프로젝트를 키보드, 컴퓨터 및 USB를 통해 내 arduino 메가로 보내기 만하면됩니다. 추가 하드웨어가 없으며 컴퓨터, arduino 및 USB 케이블 만 있습니다.
Microsoft Visual Studio Express 2012를 사용하여 키 스트로크를 수신하고 USB로 보내기위한 코드를 작성하고 있습니다. 이것은 내가 사용하고있는 코드입니다 :
#include "stdafx.h"
#include "conio.h"
using namespace System;
using namespace System::IO::Ports;
int main(array<System::String ^> ^args)
{
String^ portName;
String^ key;
int baudRate=9600;
Console::WriteLine("type in a port name and hit ENTER");
portName=Console::ReadLine();
//arduino settings
SerialPort^ arduino;
arduino = gcnew SerialPort(portName, baudRate);
//open port
try
{
arduino->Open();
while(1)
{
int k = getch();
key = k.ToString();
Console::WriteLine(key);
arduino->Write(key);
if (k == 32)
return 0;
}
}
catch (IO::IOException^ e)
{
Console::WriteLine(e->GetType()->Name+": Port is not ready");
}
}
이 코드는 잘 작동하고 명령을 arduino로 보냅니다. 나는 이것도 잘 물어볼지도 모르지만, 35 회 키 스트로크가 끝나면 키 스트로크를 멈추고, 나는 왜 그런지 확신 할 수 없다.하지만 그건 arduino 문제가 아니다. (나는 생각하지 않는다).
키의 특정 값이 arduino로 전송되면 변경됩니다. 예를 들어 숫자 1과 2를 누르기 위해 변수 키에 할당 된 값은 각각 49와 50입니다. 그러나, 그들이 arduino에 보내질 때, 값은 어떤 다른 방법입니다. 1은 현재 57이고, 2는 48입니다. 나는 이것이 왜 일어나고 있는지 확신 할 수 없습니다. 나는 4와 5를 시도하고 그들은 모두 그 값은 아래 2 키 2.이 같은 이동 제가 아두 이노에있는 코드가 있습니다 단지에 빛을 스위치 오프하는 것입니다 지금 현재로
int ledPin = 13;
int key=0;
int c;
void setup()
{
pinMode(ledPin, OUTPUT); // pin will be used to for output
Serial.begin(9600); // same as in your c++ script
}
void loop()
{
if (Serial.available() > 0)
{
key = Serial.read(); // used to read incoming data
if (key == 57)
{
digitalWrite(ledPin, HIGH);
}
else if (key == 48)
{
digitalWrite(ledPin, LOW);
}
}
c = key;
Serial.println(c);
}
. 나는 더 많은 키들을 포함시키고 그 값들이 일관성있게 유지되기를 기대하면서 매우 편리 할 것입니다. 어쨌든, 누군가가 왜 값이 다른지 저를 도울 수 있다면 그것은 대단 할 것입니다. 나는 완전히 프로그래밍에 익숙하지 않지만, 나는 전문가가 아니며, 진보 된 것을 너무 많이받지 못했다.
도움이나 조언을 보내 주셔서 감사합니다.
하지만 arduino로 보낼 수는 없지만 정수로 유지하면 좋습니다. 뭔가가 int를 문자열로 변환 할 수 없습니다. IO :: Ports : WriteLine을 사용하여 int 값을 보내려면 어떻게해야합니까? 나는 찾고 있었지만 어떤 예도 찾을 수 없다. – Ben
다음과 같이 문자열을 보낼 수 있습니다. 1을 누르면 getch()는 숫자를 반환하지만 그 숫자를 문자열 "1"로 변환하고 "1"을 Arduino에 보냅니다. ASCII 값을 실제 누른 키로 매핑하는 몇 가지 기능이 있어야합니다. 또는 k == 49 인 경우 myString = "1" – user2461391