Не работает TFT при передаче из Serial

MiMarch
Offline
Зарегистрирован: 08.01.2016

Еще раз извиняюсь за новую тему. Сначала коды, описание после

#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 день бьюсь не могу доделать

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А новая тема-то зачем? В прошлой теме Вы писали:

MiMarch пишет:

Когда отправляю 20160108183925 получаю -468303499, что делать?

 
И что? Теперь Вы вот ЭТО (20160108183925 ) пытаетесь (в строке 16) запихать в int !!!! И удивляетесь, что не работает!
 
Максимально возможное числло типа int здесь 32767 Большее число в int просто не полезет! А Вы чего туда пихаете?
MiMarch
Offline
Зарегистрирован: 08.01.2016

То есть еще сокращать? Я когда ввожу значения больше макс он делает его с -, а тут он вообще не выводит, загорается белый экран и все, никакой больше реакции

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Сделайте long. Unsigned long. Старую тему можно удалить тогда?

MiMarch
Offline
Зарегистрирован: 08.01.2016

Теперь он выводит отдельно 0109-дата 1209-время 08 -сек, но ничего не изменяется, загорается RX и TX, ждет некоторое время и загорается белый экран

 
MiMarch
Offline
Зарегистрирован: 08.01.2016

Да

MiMarch
Offline
Зарегистрирован: 08.01.2016

А почему long разве 1214 слишком много?

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

А отправлять отдельно значения не можно?

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Нет, для инт максимум (для unsigned) 32767.

MiMarch
Offline
Зарегистрирован: 08.01.2016

Можно чуть по подробнее, отдельно каждую цифру?

MiMarch
Offline
Зарегистрирован: 08.01.2016

Я не понимаю почему TFT экран ломается

 

MiMarch
Offline
Зарегистрирован: 08.01.2016

Проблема в ASCII? Python отправляет в ASKII, но по идее parseInt возвращает int

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

По идее? А на самом деле что возвращает?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Yarik.Yar пишет:

Сделайте long. Unsigned long. Старую тему можно удалить тогда?

Какой нахрен unsigned long, когда у него число 20160108183925? На четыре порядка больше, чем unsigned long!

Тут ТС надо просто голову включить, или пойти в "Ищу исполнителя".

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Yarik.Yar пишет:

А отправлять отдельно значения не можно?

 

Значит, так...да, я чего-то не подумал)

MiMarch
Offline
Зарегистрирован: 08.01.2016

Я же сказал исправил он отправляет отдельно 0109 и отдельно 1249, то есть int хватает, я спрашиваю, почему экран белым загорается, а не выводит цифры

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MiMarch пишет:

Я же сказал исправил он отправляет отдельно 0109 и отдельно 1249, то есть int хватает, я спрашиваю, почему экран белым загорается, а не выводит цифры

MiMarch, а почему у меня вместо 1 печатается 2? Вы в курсе?

Может сначала скетч покажете, который эти отдельные цифири должен по Вашему мнению выводить, а потом спрашивать будете?

MiMarch
Offline
Зарегистрирован: 08.01.2016

Я в начале вроде все коды отправлял, сейчас я убрал все кроме времени и даже его он не выводит

MiMarch
Offline
Зарегистрирован: 08.01.2016

Экран 1.8 дюйма, но почему не работает, повотрю, загорается белый экран при получении

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

В начале Вы всё выводили одним числом. а сейчас, говорите. что несколькими.

MiMarch
Offline
Зарегистрирован: 08.01.2016

Ну да

Теперь я просто время отправляю то есть 1338 это время

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Давайте по порядку.

1. Вы пробовали, как я Вам советовал, убрать всё связанное с приёмом из сериала и просто напечатать число 1338? Каков результат?
2. Вы пробовали убрать всё связанное с TFT и просто вывести в тот же сериал то, что принимаете из Вашего питона? Каков результат?

Ну, и последнее. Если Вы не можете придумать как сделать п.2 из-за того, что сериал занят, попробуйте наконец следующее.

В знаете что точно передаёт Ваш Питон? Точно знаете? Тогда:

1. Уберите Питон (но не чтение из сериала), просто не запускайте питон.
2. Запустите скетч с монитором порта и введите ручками в монитор порта то, что передаёт питон (т.е. "прикиньтесь питоном")
3. Посмотрите, что выводится.

Если выводится правильно, значит питон передаёт не то. что Вы думаете - ковыряйте свой питон.
Если выводится неправильно - отлаживайтесь без питона с монитором порта - это намного проще, т.к. Вы видите что передаёте.

MiMarch
Offline
Зарегистрирован: 08.01.2016

Serial и вывод из него на экран работает идеально, но вот питон я привязать не могу

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Т.е. если Вы с ЭТИМ ЖЕ САМЫМ скетчем вводите информацию из сериала руками, то всё работает хорошо, я правильно пноял?

Если так, значит Ваш питон передаёт НЕ ТО, что Вы вводите руками. Добейтесь, чтобы передавал ТО.

Доя этого отложите скетч в сторонку отладьте пионовскую часть отдельно от скетча. Добейтесь, чтобы она передавала именно то. что Вам надо - то, что Вы руками вводите. ОТладьте его отдельно - не мешайте мух с котлетами.

MiMarch
Offline
Зарегистрирован: 08.01.2016

ПРоблема в том что python в com порт отправляет только в ASCII, а когда я принимаю получаю не то что хочу, вот я потому и спрашиваю что не знаю как это сделать, он только в ASCII отправляет и когда я принимаю parseint не работает как я понимаю

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Так, ещё раз, а в чём отправляет Ваш монитор порта? Не в ASCII? В UTF? Я не уверен.

Почему-то уверен, что проблема не в ASCII, а в самом сообщении. Он просто отправляет не то, что Вы набираете руками. Вы уверены. что он отрправляет именно то? Безо всяких левых символов.

Можете чётко написать что именно он отправляет? Вы в мониторе порта именно это набирали руками?

Хорошо. Вместо монитора порта запустите какой-нибудь TTY и скажите ему явно, чтобы отрпавлял в ASCII - он точно умеет. И из него наберите то, что Вам нужно - посмотрите как отреагирует скетч.

 

MiMarch
Offline
Зарегистрирован: 08.01.2016

Вот что он отправляет b'1503', что это?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не знаю, что это. Это Вы тправляете.

Так. Теперь, когда Вы запускаете скетч БЕЗ питона с монитором порта и вводите в монитор точно это (b'1503') Скетч всё правильно показывает?

MiMarch
Offline
Зарегистрирован: 08.01.2016

Нет вместо 1503 он выводит 150

MiMarch
Offline
Зарегистрирован: 08.01.2016

Но на экран

MiMarch
Offline
Зарегистрирован: 08.01.2016

Все надо теперь просто питон привязать к фрдуино

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MiMarch пишет:

Нет вместо 1503 он выводит 150

Блин, ну Вы ж говорили, что всё идеально выводит! Ну, так добейтесь, чтобы выводил правильно хоть из монитора, а потом уж думайте о питоне.

MiMarch
Offline
Зарегистрирован: 08.01.2016

Я просто случайно 4 элемента в char установил, так что все ок, потом питон привяжу