Arduino UNO CashCode CCNET. LCD

sl963
Offline
Зарегистрирован: 12.08.2015

Приветствую. Нужна помощь в выводе данных с купюроприемника 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();
 
}

}

 

Improbus42
Offline
Зарегистрирован: 19.12.2019

Здравствуйте! Какое подключение ardiuno вы использовали? A0- TX(17), A1-RX(15), GRD - 4? Попробовал все сделать, как у вас. Монитор порта молчит, купюроприемник лишь мигает зеленым и не более.

b707
Offline
Зарегистрирован: 26.05.2017

Improbus42 пишет:

A0- TX(17), A1-RX(15), GRD - 4?

что это за цифры в скобках? -и что такое GRD - это GND? а почему он 4 ?

 

Improbus42
Offline
Зарегистрирован: 19.12.2019

Извиняюсь, конечно же GND, опечатка. Цифры в скобках это пины купюроприемника. 

Improbus42
Offline
Зарегистрирован: 19.12.2019

Извиняюсь, я только учусь и пытаюсь делать по документации.

b707
Offline
Зарегистрирован: 26.05.2017

сдается мне причина в том, что у купюроприемника RS232, а у ардуины - USART. это не одно и то же

Improbus42
Offline
Зарегистрирован: 19.12.2019

Что посоветуете сделать? Купить адаптер для UART - RS232? Arduino подключать ко входам UART, а выход RS232 к купюроприемнику?

chiffa
Offline
Зарегистрирован: 30.04.2014

Приветствую! Тема стара, но вдруг подскажете ) при отправке любой команды купюрник отвечает ею же...

то есть, шлю резет, в ответ в порт приходит:  02 03 06 30 41 B4

хотя должно быть (вроде как) 02 03 06 00 С2 82

может, кто подскажет что может быть не так и в какую сторону копать?