所以,我有一个arduino uno R3 SMD版本,我想在它运行时向它发送命令。它有一个adafruit v2电机屏蔽连接到它,它与arduino分开供电。 arduino通过USB电缆连接到我的笔记本电脑。
现在,电机屏蔽工作,我可以将代码发送到arduino以使其做事。我无法让arduino收到我从串口连接运行时发送给它的任何东西。我可以用arduino代码打印到arduino ide中的显示器。我正在使用debian linux stretch btw。我的arduino ide来自debian回购。
以下是我尝试使用的所有代码:
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 2);
void setup()
{
Serial.begin(115200);
AFMS.begin();
myMotor->setSpeed(300);
}
char input;
int dir;
void loop()
{
dir = 0;
if (Serial.available() > 0) {
input = Serial.read();
Serial.print(input);
if (input == 1) {
dir = FORWARD;
}
if (input == 2) {
dir = BACKWARD;
}
}
if (dir != 0) {
myMotor->step(360, dir, DOUBLE);
delay(1000);
}
}
#include <stdlib.h>
#include <stdio.h>
int
main(int argc, char **argv)
{
FILE *arduino;
int c;
arduino = fopen("/dev/ttyACM0", "w");
if (arduino == NULL) {
fprintf(stdout, "NOOOOOOOOOOOO\n");
}
while (1) {
c = fgetc(stdin);
if (c == 'f') {
fprintf(arduino, "%d", 1);
}
if (c == 'b') {
fprintf(arduino, "%d", 2);
}
fflush(arduino);
if (c == 'q') {
break;
}
}
return 0;
}
我很确定这不是权限问题,我从root运行控制器代码,tty设备打开正常。另外,我已经尝试了9600和115200的波特率,但没有骰子。有没有人有想法?从谷歌搜索看来,这似乎是其他人都在做的事情。
答案 0 :(得分:1)
您的控制器正在发送字符 '1'
和'2'
。您的Arduino正在检查字符代码 1
和2
- 换句话说,字符 Ctrl A 和< KBD>控制 乙。您可以在任何一端进行更改,只需匹配即可。