Делаю часы, но нет DS для определение реального времени, так вот написал на питоне программу, все работает, но вот на дуне не работает Arduino code Код (C++): #include <TFT.h> #include <SPI.h> #define cs 10 #define dc 9 #define rst 8 TFT TFTscreen = TFT(cs, dc, rst); int led = 13; void setup() { TFTscreen.begin(); Serial.begin(9600); pinMode(led, OUTPUT); } void loop() { TFTscreen.background(0, 0, 0); TFTscreen.setTextSize(1); if (Serial.available() > 0) { digitalWrite(led, HIGH); TFTscreen.text(Serial.read(), 0, 0); } } Pythone code Код (Python): import os import sys import serial import datetime ser = serial.Serial('COM4', 9600) print(ser.name) print(datetime.datetime.now()) date_string = str(datetime.datetime.now()) date_bytes = date_string.encode('ascii') ser.write(date_bytes) print('OK') ser.close Помогите кто может
Ошибка следующая exit status 1 invalid conversion from 'int' to 'const char*' [-fpermissive] , как понимаю проблема с типами данных
Рискну предположить, что ругань идет на эту строку: Код (Text): TFTscreen.text(Serial.read(), 0, 0); Также рискну предположить, что первый параметр метода text класса TFT требует параметр char*, т.е. указатель на нультерминированную строку, в то время как Serial.read возвращает код единственного символа, считываемого из последовательного порта. Так что, если есть желание в данном контексте воспользоваться именно методом text, то правильнее будет примерно так (пример сделан грубо и в лоб, логично привести в более цивилизованный вид по месту, также возможны опечатки): Код (Text): // объявляем массив, в котором будет храниться // строка длиной один символ и завершающий ее байт со // значением 0 char readstr[2]=" "; // читаем из последовательного порта один символ и загоняем его на место первого символа в строке, хранящейся в readstr readstr[0]=Serial.read(); // выводим полученную односимвольную строку TFTscreen.text(readstr, 0, 0); Но лучше в данном контексте попробовать воспользоваться методом write, который наверняка просто обязан заваляться у класса TFT, поскольку должен по цепочке наследоваться от класса Print (впрочем, это не факт, могли и наворотить чего-то, а в дебри реализации залезать лень, но скорее всего, поскольку в реализации text используется print). Примерно так, если сработает: Код (Text): TFTscreen.SetCursor(0, 0); TFTscreen.write(Serial.read());
#include <TFT.h> #include <SPI.h> #define cs 10 #define dc 9 #define rst 8 TFT TFTscreen = TFT(cs, dc, rst); int led = 13; void setup() { TFTscreen.begin(); Serial.begin(9600); pinMode(led, OUTPUT); } void loop() { TFTscreen.background(0, 0, 0); TFTscreen.setTextSize(1); if (Serial.available() > 0) { digitalWrite(led, HIGH); for (int i = 0; Serial.available() > 0; i++){ int x[26]; for(int c = 0; c < 26; c++){ x = Serial.parseInt(); } char y[26]; for(int z = 0; z < 26; z++){ y = x; TFTscreen.text(y, 0, 0); } } } } Новый код, но всей равно не работает, черный экран и ничего больше