用Arduino制作一個二維碼顯示器


先上圖

場景是這樣的, 這幾天給CS系統做一個微信支付的功能,  但是生成的二維碼是在前台的電腦上..不可能讓用戶跑到前台的電腦上去掃描...然后拿出了N年前買的Arduino 做了一個二維碼顯示器..就可以放在前台的桌子上了.

 

 淘寶有很多種,最便宜的只要十幾塊................................320*240,能裝SD卡,還能觸摸..最爽的是直插UNO,直插直插,不用接線..

很簡單的程序,通過串口和主機通訊,在屏幕上顯示一個二維碼...

但是有兩個問題,不可能傳輸圖片,圖片太大,串口太慢,, 所以把支付地址通過串口發送到板子上,然后找到QRCode(https://github.com/ricmoo/QRCode)這個庫,生成二維碼..

 

注意,單片機資源受限,生成更大二維碼需要更大的內存,也需要更長的時間,見QRCode文檔..有的大的就用不了.

我用的是51*51的分辨率.然后再擴大4倍,也就二百個像素..

見代碼.

void loop()
{
   //顏色,白色.
  int c = 0x0000;
  
  if (Serial.available())
  {
    Serial.println("Start");
    LCD_Clear(0xffff);
     //串口收到數據,清空屏幕,然后生成二維碼.
    String strURL = Serial.readString();
    Serial.println(strURL);
    QRCode qrcode;
//選擇二維碼類型,這里是9, 兩個數字一樣 uint8_t qrcodeData[qrcode_getBufferSize(
9)]; char* p = strURL.c_str(); qrcode_initText(&qrcode, qrcodeData, 9, 0, p); Serial.println(qrcode.size);
// 圖片放大的倍數, 51*51的分辨率顯示出來是什么樣??
int kuo = 4;
for (uint8_t y = 0; y < qrcode.size; y++) { for (uint8_t x = 0; x < qrcode.size; x++) { int hs = qrcode_getModule(&qrcode, x, y) ? 1 : 0; if (hs == 1) {
//放大圖片. unsigned
int xk = x * kuo + 20; unsigned int yk = y * kuo+ 20; for (uint8_t k = 0; k < kuo; k++) { V_line( xk+ k, yk, kuo, c); } } } } } }

 

注意,這個屏幕是個便宜貨,廠家給的DEMO根本驅動不起來,也不提供支持..

我這里有自己改的驅動...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM