ジャンル不定の日記です。

MOSFETでモーターを動かす前にLEDで実験

昨日タクトスイッチとMOSFETを使ってLEDを1個光らせる実験をしたが、
Orange Pi ZeroでMOSFET8個を制御する実験やった。

#include <unistd.h>
#include <fcntl.h>

int main(void){
    char phase[4][4]={
        {'1','0','0','1'},
        {'1','0','1','0'},
        {'0','1','1','0'},
        {'0','1','0','1'}
    };
    int gpio[4];
    gpio[0]=open("/sys/class/gpio/gpio12/value",O_WRONLY);
    gpio[1]=open("/sys/class/gpio/gpio11/value",O_WRONLY);
    gpio[2]=open("/sys/class/gpio/gpio6/value",O_WRONLY);
    gpio[3]=open("/sys/class/gpio/gpio1/value",O_WRONLY);
    int i,j,p;
    for(i=0;i<100;i++){
        p=i%4;
        for(j=0;j<4;j++){
            write(gpio[j],&phase[p][j],1);
        }
        sleep(1);
    }
    char b='0';
    for(j=0;j<4;j++){
        write(gpio[j],&b,1);
    }
    close(gpio[0]);
    close(gpio[1]);
    close(gpio[2]);
    close(gpio[3]);
    return(0);
}
↑ソースコードはこんな感じ。


1秒毎に2個ずつ光るLEDが変わる。
ミニブレッドボード4個は全部同じでハーフブリッジ回路?にした。
MOSFETは8個だが2個は同時にON/OFFするんでGPIOは4本。
12,11,6,1のGPIO使った。6と1の間にはGNDがあるんで1ピン飛ぶ。
MOSFETは全部Nチャネルだが、半分Pチャネルにすれば2本で制御できると思ってる。

あとはsleepをnanosleepにしてモーターで実験したい。