Как преобразовать символ в строку?
То, что я собрал в сети, у меня не работает. У меня есть Visual Studio и обработка, отправляющие эту функцию через последовательный порт на тот же COM-порт 9 с той же скоростью передачи данных, и я ничего не получаю. Единственный способ, которым этот код выше будет выполняться, — это если я изменю тип данных на char на стороне Arduino, несмотря на то, что и Visual Studio 2013, и обработка отправляют строки через последовательный порт.
String id;
int led = 6;
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop() {
id = Serial.readString();
if (id == "1") {
digitalWrite(led, HIGH);
}
/* ОБРАБОТКА*/
if (mousePressed == true) { //если мы щелкнули в окне
myPort.write('1'); //отправить 1
}
else { //иначе
myPort.write('0'); //отправить 0
}
}
/* Визуальная Студия */
if (r == "switch") { port.Open(); port.WriteLine("1"); port.Close(); }
Даже в моем новом обновлении для Arduino я все еще не получаю ничего, что могло бы выполнить нужную мне функцию, несмотря на то, что я нашел новые функции, которые, как предполагается, преобразуют символы в строки.
Подойдет любой из этих типов данных: char, byte, int
< a href="http://www.arduino.cc/en/Reference/ASCIIchart.html">http://www.arduino.cc/en/Reference/ASCIIchart.html
char id;
int led = 6;
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop()
{
//id = Serial.read();//id = Serial.read() - '0';
//id = Serial.read();
String idi = String(idi);
/*
will only read the 1st bit on the buffer so
no 10s...90s because the whole char so we
need to use Strings datatype somehow but
the thing is that the Serial.Read func only
reads the first byte. R&D
*/
if (idi == "1")
{
digitalWrite(led, HIGH);
// Serial.println("on");
}
else if (idi == "B2")
{
digitalWrite(led, LOW);
Serial.println("off");
}
else if (idi == "C")
for (int I = 0; I < 15; I++)
// for (int ledP = 0; ledP < 15; ledP++)
{
digitalWrite(led, HIGH);
delay(100);
digitalWrite(led, LOW);
delay(100);
}
Serial.flush();
}
Что мне действительно хотелось бы, так это превратить переменную idi в строку, чтобы я мог просто быть более описательным с моими вызовами функций, и в то же время, чтобы я мог быть более креативным с моими вызовами функций, так как мне придется много писать, а написание вызовов с использованием символов от 0 до 9 недостаточно, так как если я начну использовать последовательный порт 10/99, будет считываться только первый байт, вызывая 1/9. Например:
if (Serial.available())
{ // If data is available to read,
dat = Serial.read(); // dat = Serial.read() - '0';
}
if (dat == "angel")
{
digitalWrite(6, HIGH); // turn the LED on
//Serial.println("angel" + dat);
}
// delay(10); // Wait 10 milliseconds for next reading
}
в отличие от
if (Serial.available())
{ // If data is available to read,
dat = Serial.read(); // dat = Serial.read() - '0';
}
if (dat == '1')
{ // If 1 was received
digitalWrite(6, HIGH); // turn the LED on
//Serial.println("A" + dat);
} else {
digitalWrite(6, LOW);
}
// delay(10); // Wait 10 milliseconds for next reading
}
@Jai Lopez, 👍-2
0
- Как объявить массив переменного размера (глобально)
- Программирование Arduino с использованием Python, а не C/C ++
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Является ли использование malloc() и free() действительно плохой идеей для Arduino?
- Как справиться с rollover millis()?
- Можно ли сделать несколько функций loop() с помощью Arduino Uno?
- Какие накладные расходы и другие соображения существуют при использовании структуры по сравнению с классом?
- устаревшее преобразование из строковой константы в 'char*'