查看: 110|回復: 1
打印 上一主題 下一主題

M5Stick V+熱敏打印機打印照片

[復制鏈接]
  • TA的每日心情
    無聊
    2019-8-12 13:52
  • 簽到天數: 1 天

    [LV.1]初來乍到

    跳轉到指定樓層
    樓主
    發表于 2020-4-29 14:02 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

    M5Stick V(UnitV) + Adafruit Thermal Printer + M5Stack Gray = Instant Camera Printer


    1.硬件
    Adafruit熱敏打印機
    M5StickV(或者UnitV)
    M5Stack 主機
    Grove連接線


    2.連接
    將M5StickV或UnitV的Grove接口與M5Stack Core進行連接
    將Adafruit熱敏打印機的串口與M5StackCore的Pin2和Pin5連接,5V與GND接到相應引腳
    對于M5StickV來說需要加入兩行代碼:
    sensor.set_vflip(1)
    sensor.set_hmirror(1)
    按下A鍵進行拍照打印


    3.代碼
    M5Stack端

    kittenblock中小學創客名師推薦的圖形化編程軟件

    
    #include <M5Stack.h>
    #include "Adafruit_Thermal.h"
    
    Adafruit_Thermal printer(&Serial2);     // Pass addr to printer constructor
    void setup()
    {
        M5.begin(true, true, true);
        M5.Lcd.fillScreen(BLACK);
        M5.Lcd.setCursor(0, 0);
        M5.Lcd.println("GO");
        // Connect M5Stack
        // vert 2 jaune 5 Noir gnd
        Serial2.begin(19200, SERIAL_8N1, 2, 5);
        printer.begin();    
        Serial1.begin(115200,SERIAL_8N1 ,21,22);
        printer.println(F("Start"));
    }
    
    
    void loop()
    {
        M5.update();
        if (M5.BtnA.wasReleased()) 
            {          
              M5.Lcd.fillScreen(BLACK);
              M5.Lcd.setCursor(0, 0);
              M5.Lcd.print('A');
              Serial1.print('/');
            }
            
         
        if(Serial1.available()> 0)
        {
          String str = Serial1.readString();
          M5.Lcd.println(str); 
            
          uint8_t dataArray[400];
          char string[400*4+1];
          
          str.toCharArray(string, 400*4+1);
          Serial.print("ch:");
          Serial.println(string);
          Serial.println("****************");
          char* ptr = strtok(string, ",");
            int i = 0;
            while(ptr != NULL) {         
              dataArray = atol(ptr);
              i= i +1; 
            // create next part
            ptr = strtok(NULL, ",");
            }
     
           Serial.print("fin"); 
           Serial.println(i);               
          printer.printBitmap(320, 10, dataArray);    
                
        }
    }


    M5StickV/UnitV端

    kittenblock中小學創客名師推薦的圖形化編程軟件

    
    import sensor
    import image
    import lcd
    import time
    import sys
    import utime
    from machine import I2C,UART
    
    from fpioa_manager import fm
    
    #uart initial
    fm.register(35, fm.fpioa.UART2_TX, force=True)
    fm.register(34, fm.fpioa.UART2_RX, force=True)
    
    uart_Port = UART(UART.UART2, 115200,8,0,0, timeout=1000, read_buf_len= 4096)
    
    
    clock = time.clock()
    lcd.init()
    sensor.reset()
    sensor.set_pixformat(sensor.GRAYSCALE)
    sensor.set_framesize(sensor.QVGA)
    sensor.set_vflip(1)
    sensor.set_hmirror(1)
    sensor.run(1)
    sensor.skip_frames(20)
    
    KO = 1
    while True:
        clock.tick()
        img = sensor.snapshot()
        data = str(uart_Port.readline())
        colone = 0
        info = [0,0,0,0,0,0,0,0]
        if data[2] == "/" :
            i = -1
            lg = 0
            img2 = sensor.snapshot()
            print(img2.width())
            print(img2.height())
            for y in range(0, 240):
                for x in range(0, 320):
                    i = i + 1
                    col = img2.get_pixel(x,y)
                    if col > 127 :
                        info= 0
                    else:
                        info= 1
                    if i == 7 :
                        result = info[0] * 128 + info[1] * 64 + info[2] * 32 + info[3] * 16 + info[4] * 8+ info[5] * 4 + info[6] * 2 + info[7] * 1
                        uart_Port.write("{}".format(result))
                        if (x != 320 and y != 10) :
                             uart_Port.write(",")
                        i = -1
                        info = [0,0,0,0,0,0,0,0]
                        colone = colone +1
                lg = lg + 1
                if lg == 10 :
                    lg = 0
                    utime.sleep(2)
            utime.sleep(10)
        lcd.display(img)

  • TA的每日心情
    擦汗
    2019-7-29 00:08
  • 簽到天數: 47 天

    [LV.5]常住居民I

    沙發
    發表于 2020-4-29 18:27 | 只看該作者
    給幾個實物照片看看?
    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規則

    熱門推薦

    兩個ESP8266通訊,有大佬會的嗎?
    兩個ESP8266通訊,有大佬會
    我可以讓手機APP和8266遠程傳輸一些數據,現在要加多一個8266,應該怎么做?
    arduino連接ESP8266-01給微信發消息,消息提醒等
    arduino連接ESP8266-01給
    材料準備 ESP8266-01/ESP8266-01s一塊 arduino 一塊 手機一塊 接線 ESP8266-0
    我有個大膽的想法,大神請進
    我有個大膽的想法,大神請
    在B站,偶爾看到有大神用單片機做出各種智能設備,感覺很神奇,突然茅塞頓開,意識到
    又雙叒更新同步開關狀態 ,小愛同學+app+本地按鍵控制狀.....
    又雙叒更新同步開關狀態
    你有沒有發現app上面的按鍵在操作完畢后你就不知道開關的狀態了;或者小愛操作完畢后
    小白求助,急急急,各路大神幫幫忙
    小白求助,急急急,各路大
    傳感器技術,不知如何寫代碼
    Copyright   ©2015-2016  Arduino中文社區  Powered by©Discuz!   
    快速回復 返回頂部 返回列表
    财神捕鱼游戏手机版下载 贵州11选5任二追号 青海快三开奖结果昨天走势图 重庆快乐10分预测 临沂期货配资公司 今天体彩开奖直播现场 配资好吗到佳永配资不错 重庆幸运农场开奖直播 002556股票分析 多乐彩票五分钟来奖 今日股票推荐今日股票推荐黑马