用Arduino製做一個二維碼顯示器

先上圖git

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

 

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

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

可是有兩個問題,不可能傳輸圖片,圖片太大,串口太慢,, 因此把支付地址經過串口發送到板子上,而後找到QRCode(https://github.com/ricmoo/QRCode)這個庫,生成二維碼..微信支付

 

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

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

見代碼.code

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根本驅動不起來,也不提供支持..blog

我這裏有本身改的驅動...圖片

相關文章
相關標籤/搜索