Не работает 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 установил, так что все ок, потом питон привяжу