25
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

いろいろなマイコンでのLチカ比較

Last updated at Posted at 2018-05-19

電子工作で誰もが最初に通る道,Lチカですが,マイコン間の比較記事がそんなに見つからなかったので,
いろいろなマイコンのいろんなLチカの書き方をまとめてみました.

※写真のLEDは抵抗入りのLEDを使っています。
抵抗の入っていないLEDを使う場合は直列に抵抗を入れるのを忘れないようにしてください

昔ながらのPICマイコン

IMG_4780.jpg

#include <stdio.h>
#include <htc.h> 
#include <pic.h>
#include <pic16f84a.h>
 
#define _XTAL_FREQ 8000000
 
void main( void )
{
    __CONFIG ( FOSC_HS & WDTE_OFF & PWRTE_ON & CP_OFF );
    TRISB = 0x00;
 
    while ( 1 ) {
        PORTB = 0x01;
        __delay_ms(500); 
 
        PORTB = 0x00;
        __delay_ms(500); 
    }
}

初期からあるマイコン.自分で回路を作ってはんだ付けをして,それで初めてプログラムができるという状態だったので,Lチカできたときの達成感がかなりありました

プログラムとしてはC言語で,メモリに操作でピンの状態を変更します
(XXX番地のメモリを1に書き換えたら5V出力する,など)

電子回路入門のハードルを下げたArduino

IMG_4771.JPG

int LED = 13;

void setup() {
  pinMode(LED,OUTPUT);
}

void loop() {
    digitalWrite(LED,HIGH);
    delay(500)
    digitalWrite(LED,LOW);
    delay(500)
}

回路を作らないで,いきなりプログラムがかけるようになったマイコン.
setupとloopという関数を初めて(?)導入して,
PICと同じくC言語でかけるが,メモリをいじることはなく,様々な関数を呼ぶことでピンの状態を操作します

マイコンというよりはPCのRaspberry Pi

IMG_4773.JPG

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import RPi.GPIO as GPIO
from time import sleep
 
GPIO.setmode(GPIO.BCM)
GPIO.setup(3, GPIO.OUT)
 
while True:
    GPIO.output(3, GPIO.HIGH)
    sleep(0.5)
    GPIO.output(3, GPIO.LOW)
    sleep(0.5)

マイコンが高機能になったというより,PCにGPIOをつけたようなボード.
ほぼほぼPCなので,どの言語でもかけるが,Pythonで書いているサンプルが多い気がします

教育に最適なMicro:bit

スクリーンショット 2018-05-19 15.12.46.png

スクリーンショット 2018-05-19 14.07.31.png
ブロックプログラムができるので,プログラムを触ったことがない人でも使いやすくなっています

Javascriptでも書くことができて,その場合のLチカはこうなります

basic.forever(() => {
    led.plot(0, 0)
    basic.pause(500)
    led.unplot(0, 0)
    basic.pause(500)
})

最近話題のM5Stack

banner_core.jpg
※写真は公式サイトより

#include <M5Stack.h>

int ledPin = 1;  
int ledState = LOW;

void setup(){
  M5.begin();
  pinMode(ledPin, OUTPUT);  
}

void loop() {

  digitalWrite(ledPin, ledState);
  m5.update();
}

ディスプレイとwifiがついたボード.

書き方はArduinoと互換性あり.ほかにもESP-IDFでかいたり,micro Pythonで書いたりすることができます

UIが簡単に作れるobniz

IMG_4770.JPG

<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
  <script src="https://unpkg.com/obniz@1.2.2/obniz.js"></script>
</head>
<body>

<div id="obniz-debug"></div>
<h1>LED</h1>

<script>
var obniz = new Obniz("OBNIZ_ID_HRERE");
obniz.onconnect = async function () {
  var led = obniz.wired("LED", {anode:0, cathode:1});
 while(1){
   led.on();
   await obniz.wait(500);
   led.off();
   await obniz.wait(500);
  }
};
</script>
</body>
</html>

こちらもディスプレイとwifiがついたボード.
言語はHTML(javascript)で,Web上のUIと連携が簡単に作れるのが特徴です

スマホ画面のUIからLチカするとこうなります
20180519_161106.GIF

(おまけ)物理のLチカ

プログラムを使わない一番シンプルなLチカ
1行もコードを書かないので,とても素早く実装できる!笑
20180519_151948.GIF

25
18
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?