Не работает TFT при передаче из Serial
- Войдите на сайт для отправки комментариев
Сб, 09/01/2016 - 10:40
Еще раз извиняюсь за новую тему. Сначала коды, описание после
#include <TFT.h>
#include <SPI.h>
#define cs 10
#define dc 9
#define rst 8
TFT TFTscreen = TFT(cs, dc, rst);
char DATETIME[26];
void setup() {
TFTscreen.begin();
Serial.begin(9600);
}
void loop() {
String ComData = String(Serial.parseInt());
ComData.toCharArray(DATETIME, 26);
if(Serial.available() > 0){
Serial.print(DATETIME);
}
TFTscreen.background(0, 0, 0);
TFTscreen.stroke(255, 255, 255);
TFTscreen.setTextSize(2);
TFTscreen.text(DATETIME, 0, 20);
}
К сожалению нет 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_string = date_string[:4] + date_string[5:7] + date_string[8:10] + date_string[11:13] + date_string[14:16] + date_string[17:19]
DATE = date_string[:8]
TIME = date_string[8:]
TIME_bytes = TIME.encode('ascii')
DATE_bytes = DATE.encode('ascii')
print(DATE)
print(TIME)
print(date_string)
date_bytes = date_string.encode('ascii')
ser.write(TIME_bytes)
ser.write(DATE_bytes)
print('OK')
print(date_bytes)
print(len(date_bytes))
ser.close
В общем, Python передает отдельно дату и время, но ардуино при получении просто делает экран белым, но при отправке в ручную все работает как часы, только есть максимальное значение. Помогите 4 день бьюсь не могу доделать
А новая тема-то зачем? В прошлой теме Вы писали:
Когда отправляю 20160108183925 получаю -468303499, что делать?
То есть еще сокращать? Я когда ввожу значения больше макс он делает его с -, а тут он вообще не выводит, загорается белый экран и все, никакой больше реакции
Сделайте long. Unsigned long. Старую тему можно удалить тогда?
Теперь он выводит отдельно 0109-дата 1209-время 08 -сек, но ничего не изменяется, загорается RX и TX, ждет некоторое время и загорается белый экран
Да
А почему long разве 1214 слишком много?
А отправлять отдельно значения не можно?
Нет, для инт максимум (для unsigned) 32767.
Можно чуть по подробнее, отдельно каждую цифру?
Я не понимаю почему TFT экран ломается
Проблема в ASCII? Python отправляет в ASKII, но по идее parseInt возвращает int
По идее? А на самом деле что возвращает?
Сделайте long. Unsigned long. Старую тему можно удалить тогда?
Какой нахрен unsigned long, когда у него число 20160108183925? На четыре порядка больше, чем unsigned long!
Тут ТС надо просто голову включить, или пойти в "Ищу исполнителя".
А отправлять отдельно значения не можно?
Значит, так...да, я чего-то не подумал)
Я же сказал исправил он отправляет отдельно 0109 и отдельно 1249, то есть int хватает, я спрашиваю, почему экран белым загорается, а не выводит цифры
Я же сказал исправил он отправляет отдельно 0109 и отдельно 1249, то есть int хватает, я спрашиваю, почему экран белым загорается, а не выводит цифры
MiMarch, а почему у меня вместо 1 печатается 2? Вы в курсе?
Может сначала скетч покажете, который эти отдельные цифири должен по Вашему мнению выводить, а потом спрашивать будете?
Я в начале вроде все коды отправлял, сейчас я убрал все кроме времени и даже его он не выводит
Экран 1.8 дюйма, но почему не работает, повотрю, загорается белый экран при получении
В начале Вы всё выводили одним числом. а сейчас, говорите. что несколькими.
Ну да
Теперь я просто время отправляю то есть 1338 это время
Давайте по порядку.
1. Вы пробовали, как я Вам советовал, убрать всё связанное с приёмом из сериала и просто напечатать число 1338? Каков результат?
2. Вы пробовали убрать всё связанное с TFT и просто вывести в тот же сериал то, что принимаете из Вашего питона? Каков результат?
Ну, и последнее. Если Вы не можете придумать как сделать п.2 из-за того, что сериал занят, попробуйте наконец следующее.
В знаете что точно передаёт Ваш Питон? Точно знаете? Тогда:
1. Уберите Питон (но не чтение из сериала), просто не запускайте питон.
2. Запустите скетч с монитором порта и введите ручками в монитор порта то, что передаёт питон (т.е. "прикиньтесь питоном")
3. Посмотрите, что выводится.
Если выводится правильно, значит питон передаёт не то. что Вы думаете - ковыряйте свой питон.
Если выводится неправильно - отлаживайтесь без питона с монитором порта - это намного проще, т.к. Вы видите что передаёте.
Serial и вывод из него на экран работает идеально, но вот питон я привязать не могу
Т.е. если Вы с ЭТИМ ЖЕ САМЫМ скетчем вводите информацию из сериала руками, то всё работает хорошо, я правильно пноял?
Если так, значит Ваш питон передаёт НЕ ТО, что Вы вводите руками. Добейтесь, чтобы передавал ТО.
Доя этого отложите скетч в сторонку отладьте пионовскую часть отдельно от скетча. Добейтесь, чтобы она передавала именно то. что Вам надо - то, что Вы руками вводите. ОТладьте его отдельно - не мешайте мух с котлетами.
ПРоблема в том что python в com порт отправляет только в ASCII, а когда я принимаю получаю не то что хочу, вот я потому и спрашиваю что не знаю как это сделать, он только в ASCII отправляет и когда я принимаю parseint не работает как я понимаю
Так, ещё раз, а в чём отправляет Ваш монитор порта? Не в ASCII? В UTF? Я не уверен.
Почему-то уверен, что проблема не в ASCII, а в самом сообщении. Он просто отправляет не то, что Вы набираете руками. Вы уверены. что он отрправляет именно то? Безо всяких левых символов.
Можете чётко написать что именно он отправляет? Вы в мониторе порта именно это набирали руками?
Хорошо. Вместо монитора порта запустите какой-нибудь TTY и скажите ему явно, чтобы отрпавлял в ASCII - он точно умеет. И из него наберите то, что Вам нужно - посмотрите как отреагирует скетч.
Вот что он отправляет b'1503', что это?
Не знаю, что это. Это Вы тправляете.
Так. Теперь, когда Вы запускаете скетч БЕЗ питона с монитором порта и вводите в монитор точно это (b'1503') Скетч всё правильно показывает?
Нет вместо 1503 он выводит 150
Но на экран
Все надо теперь просто питон привязать к фрдуино
Нет вместо 1503 он выводит 150
Блин, ну Вы ж говорили, что всё идеально выводит! Ну, так добейтесь, чтобы выводил правильно хоть из монитора, а потом уж думайте о питоне.
Я просто случайно 4 элемента в char установил, так что все ок, потом питон привяжу