Arduino UNO CashCode CCNET. LCD
- Войдите на сайт для отправки комментариев
Ср, 06/03/2019 - 22:13
Приветствую. Нужна помощь в выводе данных с купюроприемника CashCode на LCD(20x4). Если быть точнее хочу вывести данные о принятой купюре. На данный момент реализована связь купюрник и Arduino. Arduino и LCD. Arduino принимает команды. Купюрник принимает купюры. На LCD обычный текст получилось вывести(из примеров), а вот данные от купюрника не получется. От купюрника приходит команда принятой купюры в виде "0x02 0x03 0x07 0x81 0x01 0xDD 0x3B" а как вывести ее на LCD в виде "Принята купюра:"итд. Направите в нужную сторону? Код собирал из различных примеров. Вот что получилось:
#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
SoftwareSerial mySerial(A0, A1); // RX, TX
byte poll[] = {0x02, 0x03, 0x06, 0x33, 0xDA, 0x81};
byte ack[] = {0x02, 0x03, 0x06, 0x00, 0x0C2, 0x82};
byte reset[] = {0x02, 0x03, 0x06, 0x30, 0x41, 0xB3};
byte identif[] = {0x02, 0x03, 0x06, 0x37, 0xFE, 0xC7};
byte valuta[] = {0x02, 0x03, 0x06, 0x41, 0x4F, 0xD1};
byte enable[] = {0x02, 0x03, 0x0C, 0x34, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xB5, 0xC1};
byte bills[] = {0x02, 0x03, 0x06, 0x35, 0xEC, 0xE4};
int data1 = 0;
int data2 = 0;
void sendCCNET(uint8_t *com)
{
for(char i=0; i<com[2]; i++) mySerial.write(com[i]);
Serial.write(mySerial.read());
}
void setup() {
lcd.begin(20,4);
delay(2000);
lcd.noBacklight();
delay(2000);
lcd.backlight();
mySerial.begin(9600);
sendCCNET(reset);
delay(150);
sendCCNET(poll);
delay(150);
sendCCNET(poll);
delay(150);
sendCCNET(poll);
delay(150);
sendCCNET(poll);
delay(150);
sendCCNET(poll);
delay(150);
sendCCNET(poll);
delay(150);
sendCCNET(poll);
delay(150);
sendCCNET(poll);
delay(150);
sendCCNET(poll);
delay(150);
sendCCNET(poll);
delay(150);
sendCCNET(poll);
delay(150);
sendCCNET(identif);
delay(150);
sendCCNET(valuta);
delay(150);
sendCCNET(enable);
delay(150);
sendCCNET(poll);
delay(150);
sendCCNET(ack);
delay(150);
sendCCNET(poll);
delay(150);
sendCCNET(ack);
delay(150);
sendCCNET(poll);
delay(150);
sendCCNET(ack);
delay(150);
sendCCNET(poll);
}
void loop() {
if (mySerial.available())
delay(30);
sendCCNET(poll);
delay(10);
sendCCNET(ack);
delay(30);
sendCCNET(bills);
delay(30);
sendCCNET(ack);
delay(30);
data1 = mySerial.read();
data2= mySerial.read();
if ((data1 == uint8_t {0x81}) && (data2 == uint8_t {0x01}))
{
Serial.write("принятая купюра");/
lcd.setCursor(0,0); //
lcd.print();
}
}
Здравствуйте! Какое подключение ardiuno вы использовали? A0- TX(17), A1-RX(15), GRD - 4? Попробовал все сделать, как у вас. Монитор порта молчит, купюроприемник лишь мигает зеленым и не более.
A0- TX(17), A1-RX(15), GRD - 4?
что это за цифры в скобках? -и что такое GRD - это GND? а почему он 4 ?
Извиняюсь, конечно же GND, опечатка. Цифры в скобках это пины купюроприемника.
Извиняюсь, я только учусь и пытаюсь делать по документации.
сдается мне причина в том, что у купюроприемника RS232, а у ардуины - USART. это не одно и то же
Что посоветуете сделать? Купить адаптер для UART - RS232? Arduino подключать ко входам UART, а выход RS232 к купюроприемнику?
Приветствую! Тема стара, но вдруг подскажете ) при отправке любой команды купюрник отвечает ею же...
то есть, шлю резет, в ответ в порт приходит: 02 03 06 30 41 B4
хотя должно быть (вроде как) 02 03 06 00 С2 82
может, кто подскажет что может быть не так и в какую сторону копать?