Ви не увійшли.
Сторінки 1
Доброго вечора маю два робочі скетчі. Окремо для сканера штрих кодів та для відправки даних з ультразвуковаих датчиків по wifi. Є хтось хто може їх обєднати в один, та зробити так щоб коли натиснута кнопка на сканері відправлялись:
- Штрих код
- Дані з датчиків
Хто може допомогти. За грошову подяку звісно.
Остання редакція ZmeyGo (2018-03-01 20:33:30)
Неактивний
Це перший скетч він опитує ультразвукові датчики та виводить на на екран інформацію з них та відправляє ці дані по WIFI
#include <Wire.h> //I2C
#include <LiquidCrystal_I2C.h> //LCD
#include <Ultrasonic.h> //Sonar
#include <SoftwareSerial.h>
SoftwareSerial mySerial(6, 5);//RX, TX
LiquidCrystal_I2C lcd(0x3F,16,2); // set the LCD address to 0x27 or 0x3F for a 16 chars and 2 line display
Ultrasonic axisX(8,9); // (Trig PIN,Echo PIN)
Ultrasonic axisY(10,11); // (Trig PIN,Echo PIN)
Ultrasonic axisZ(12,13); // (Trig PIN,Echo PIN)
String SSID ="";
String PASS="";
#define DST_IP "" //DIST_IP
void setup()
{
Serial.begin(9600); // debug
mySerial.begin(115200);
lcd.begin();
lcd.begin();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hello");
delay(5000);
Serial.println("Init");
mySerial.println("AT+RST"); // Reser and check
delay(1000);
if(mySerial.find("OK"))
{Serial.println("WiFi - Module is ready");}
else
{Serial.println("Module dosn't respond.");
while(1);
}
delay(1000);
// соединение по wifi
boolean connected=false;
for(int i=0;i<5;i++)
{
if(connectWiFi())
{connected = true;
mySerial.println("Connected to Wi-Fi...");
break;
}
}
if (!connected)
{
mySerial.println("Coudn't connect to Wi-Fi.");
while(1);
}
delay(5000);
mySerial.println("AT+CIPMUX=0"); // Single conection
}
void loop()
{
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += DST_IP;
cmd += "\",8283";
Serial.println(cmd);
mySerial.println(cmd);
if(mySerial.find("Error"))
return;
double width = 100-axisX.Ranging(CM);
Serial.println(width);
delay(50);
double lenght = 100-axisY.Ranging(CM);
Serial.println(lenght);
delay(50);
double height = 100-axisZ.Ranging(CM);
Serial.println(height);
delay(50);
delay(10000);
long format = (width*lenght*height)/1000000;
Serial.println(format);
lcd.clear();
lcd.setCursor (2,0);
lcd.print(width);
lcd.print("x");
lcd.print(lenght);
lcd.print("x");
lcd.print(height);
lcd.print("cm");
lcd.setCursor (4,1);
lcd.print ("V=" );
lcd.print(format);
lcd.print ("M.kyb");
cmd = "#A0:F3:C1:70:AA:94\n#2881C4BA0200003B1#"+String(format)+"\n##";
delay(3000);
mySerial.print("AT+CIPSEND=");
mySerial.println(cmd.length());
Serial.println(">");
mySerial.print(cmd);
Serial.println(cmd);
mySerial.println("AT+CIPCLOSE");
}
// WI-FI conection procedure
boolean connectWiFi()
{
String cmd="AT+CWJAP=\"" +SSID+"\",\"" + PASS + "\"";
mySerial.println(cmd);
Serial.println(cmd);
delay(2000);
if(mySerial.find("OK"))
{
Serial.println("OK, Connected to Wi-Fi.");
return true;
}
else
{
Serial.println("Can not connect to the Wi-Fi.");
return false;
}
}
це другий він сканує штрих код товару та передає його в Serial
#include <hid.h> //Add to Oleg Mazurov code to Bar Code Scanner
#include <hiduniversal.h> //Add to Oleg Mazurov code to Bar Code Scanner
#include <usbhub.h>
#include <avr/pgmspace.h>
#include <Usb.h>
#include <usbhub.h>
#include <avr/pgmspace.h>
#include <hidboot.h>
USB Usb;
HIDUniversal Hid(&Usb); //Add this line so that the barcode scanner will be recognized, I use "Hid" below
HIDBoot<HID_PROTOCOL_KEYBOARD> Keyboard(&Usb);
class KbdRptParser : public KeyboardReportParser
{
void PrintKey(uint8_t mod, uint8_t key); // Add this line to print character in ASCII
protected:
virtual void OnKeyDown (uint8_t mod, uint8_t key);
virtual void OnKeyPressed(uint8_t key);
};
void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key)
{
uint8_t c = OemToAscii(mod, key);
if (c)
OnKeyPressed(c);
}
/* what to do when symbol arrives */
void KbdRptParser::OnKeyPressed(uint8_t key)
{
if(key!=19) Serial.println((char)key);
else Serial.println((char)0x0D);
};
KbdRptParser Prs;
void setup()
{
Serial.begin(9600);
if(Usb.Init()==-1) Serial.println("OSC did not start.");
else Serial.println("Barcode Ready");
Hid.SetReportParser(0,(HIDReportParser*)&Prs); //Change "Keyboard" for "Hid"
}
void loop()
{
Usb.Task();
}
Ніяк не можу зробити так щоб дані з датчиків відправлялись по WIFI після зчитування штрих коду, штрих код теж треба відправляти
Неактивний
Дійшов до такого варіанту. Тілька одна проблема залишилась вертає тільку першу цифру штрих коду.
#include <hid.h>
#include <hiduniversal.h>
#include <usbhub.h>
#include <Usb.h>
#include <hidboot.h>
#include <avr/pgmspace.h>
#include <Wire.h> //I2C
#include <LiquidCrystal_I2C.h> //LCD
#include <Ultrasonic.h> //Sonar
#include <SoftwareSerial.h>
SoftwareSerial mySerial(6, 5);//RX, TX
LiquidCrystal_I2C lcd(0x3F,16,2); // set the LCD address to 0x27 or 0x3F for a 16 chars and 2 line display
Ultrasonic axisX(8,9); // (Trig PIN,Echo PIN)
Ultrasonic axisY(10,11); // (Trig PIN,Echo PIN)
Ultrasonic axisZ(12,13); // (Trig PIN,Echo PIN)
String SSID ="";
String PASS="";
#define DST_IP "" //DIST_IP
const byte BarcodeLength;
class BarcodeReader : public KeyboardReportParser
{
USB Usb;
USBHub Hub;
HIDUniversal Hid;
HIDBoot<HID_PROTOCOL_KEYBOARD> Keyboard;
uint8_t buffer[15];
byte length;
bool valid;
void addCharacter(uint8_t c);
public:
BarcodeReader();
void begin();
void task();
const uint8_t* barcode();
void reset();
protected:
virtual void OnKeyDown(uint8_t mod, uint8_t key);
};
BarcodeReader::BarcodeReader()
: Usb()
, Hub(&Usb)
, Hid(&Usb)
, Keyboard(&Usb)
, length(0)
, valid(false)
{
}
void BarcodeReader::begin()
{
if (Usb.Init() == -1) {
Serial.println("OSC did not start.");
}
Hid.SetReportParser(1, this);
}
void BarcodeReader::task()
{
Usb.Task();
}
void BarcodeReader::addCharacter(uint8_t c)
{
if (valid) {
// already have a barcode, new one will overwrite it
reset();
}
buffer[length++] = c;
//buffer[length] = '\0';
if (buffer[length] == '\0')
{
valid = true;
}
};
// return value no longer valid after another call to task()
const uint8_t* BarcodeReader::barcode()
{
return (valid) ? buffer : 0;
}
void BarcodeReader::reset()
{
length = 0;
valid = false;
}
void BarcodeReader::OnKeyDown(uint8_t mod, uint8_t key) {
uint8_t c = OemToAscii(mod, key);
if (c) addCharacter(c);
}
BarcodeReader barcodeReader;
void setup() {
Serial.begin(9600);
mySerial.begin(115200);
lcd.begin();
lcd.begin();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hello");
delay(5000);
Serial.println("Init");
mySerial.println("AT+RST");
delay(1000);
if(mySerial.find("OK"))
{Serial.println("WiFi - Module is ready");}
else
{Serial.println("Module dosn't respond.");
while(1);
}
delay(1000);
// соединение по wifi
boolean connected=false;
for(int i=0;i<5;i++)
{
if(connectWiFi())
{connected = true;
mySerial.println("Connected to Wi-Fi...");
break;
}
}
if (!connected)
{
mySerial.println("Coudn't connect to Wi-Fi.");
while(1);
}
delay(5000);
mySerial.println("AT+CIPMUX=0");
barcodeReader.begin();
}
void loop() {
barcodeReader.task();
const char* barcode = barcodeReader.barcode();
if (barcode) {
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += DST_IP;
cmd += "\",8283";
Serial.println(cmd);
mySerial.println(cmd);
if(mySerial.find("Error"))
return;
double width = 100-axisX.Ranging(CM);
Serial.println(width);
delay(50);
double lenght = 100-axisY.Ranging(CM);
Serial.println(lenght);
delay(50);
double height = 100-axisZ.Ranging(CM);
Serial.println(height);
delay(50);
delay(10000);
long format = (width*lenght*height)/1000000;
Serial.println(format);
lcd.clear();
lcd.setCursor (2,0);
lcd.print(width);
lcd.print("x");
lcd.print(lenght);
lcd.print("x");
lcd.print(height);
lcd.print("cm");
lcd.setCursor (4,1);
lcd.print ("V=" );
lcd.print(format);
lcd.print ("M.kyb");
cmd = "#A0:F3:C1:70:AA:94\n#2881C4BA0200003B1#"+String(format)+"\n##"+barcode;
delay(3000);
mySerial.print("AT+CIPSEND=");
mySerial.println(cmd.length());
Serial.println(">");
mySerial.print(cmd);
Serial.println(cmd);
mySerial.println("AT+CIPCLOSE");
barcodeReader.reset();
}
}
boolean connectWiFi()
{
String cmd="AT+CWJAP=\"" +SSID+"\",\"" + PASS + "\"";
mySerial.println(cmd);
Serial.println(cmd);
delay(2000);
if(mySerial.find("OK"))
{
Serial.println("OK, Connected to Wi-Fi.");
return true;
}
else
{
Serial.println("Can not connect to the Wi-Fi.");
return false;
}
}
Остання редакція ZmeyGo (2018-03-06 11:07:22)
Неактивний
Сторінки 1