忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

M5stackでLEDを制御する

前回、M5stickでGPIOを制御する記事を書きましたが、2出力しかなく、LEDなら実は4色内蔵されているみたいなのでそっちを制御してみました。



LEDを光らすだけならG34、G35を使わないでW:6、R:7、G:8、B:9を使ったほうが楽だし、色も変えられます。


まず画像判別はこちらの記事を参照していただいて学習ファイルを作ってください。


学習させた画像からLEDを点滅させるコードです。
import image
import lcd
import sensor
import sys
import time
import KPU as kpu
from Maix import GPIO
from fpioa_manager import *
import KPU as kpu
lcd.init()
lcd.rotation(2)
try:
    img = image.Image("/sd/startup.jpg")
    lcd.display(img)
except:
    lcd.draw_string(lcd.width()//2-100,lcd.height()//2-4, "Error: Cannot find start.jpg", lcd.WHITE, lcd.RED)
task = kpu.load("/sd/作成した学習ファイル名")
labels=["1","2","3","4","5"] #You can check the numbers here to real names.
fm.register(board_info.LED_W, fm.fpioa.GPIO3)
fm.register(board_info.LED_R, fm.fpioa.GPIO4)
fm.register(board_info.LED_G, fm.fpioa.GPIO5)
fm.register(board_info.LED_B, fm.fpioa.GPIO6)
 
led_w = GPIO(GPIO.GPIO3, GPIO.OUT)
led_r = GPIO(GPIO.GPIO4, GPIO.OUT)
led_g = GPIO(GPIO.GPIO5, GPIO.OUT)
led_b = GPIO(GPIO.GPIO6, GPIO.OUT)
led_w.value(1)
led_r.value(1)
led_g.value(1)
led_b.value(1)
 
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_windowing((224, 224))
sensor.run(1)
lcd.clear()
while(True):
    img = sensor.snapshot()
    fmap = kpu.forward(task, img)
    plist=fmap[:]
    pmax=max(plist)
    max_index=plist.index(pmax)
    a = lcd.display(img)
    print(labels[max_index])
    b = int(labels[max_index])
    if pmax > 0.85 and b == 5:
        lcd.draw_string(50, 40, "Accu:%.2f Type:%s"%(pmax, labels[max_index].strip()))
        print('max!!')
        
        led_b.value(0)
        time.sleep_ms(400)
        led_b.value(1)
        time.sleep_ms(400)
        led_g.value(0)
        time.sleep_ms(400)
        led_g.value(1)
        time.sleep_ms(400)
        led_r.value(0)
        time.sleep_ms(400)
        led_r.value(1)
        time.sleep_ms(400)
        led_w.value(0)
        time.sleep_ms(400)
        led_w.value(1)
a = kpu.deinit(task)


このコードでは画像を認識すると青→緑→赤→白の順にLEDが点滅します。

基本は34、35のGPIOの動作と同じと思っていたのですが、LEDはコードを見ていただければわかると思うのですが、まさかのActive Low(負論理)でした。つまりvalue(0)でLED ONとなります。
特に付属品をつけなくても、色を変えられるっていうのはいいですね。何かに使えそうです!!















拍手[0回]

PR

コメント

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31