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
может, кто подскажет что может быть не так и в какую сторону копать?