MOSFETでモーターを動かす前にLEDで実験
昨日タクトスイッチとMOSFETを使ってLEDを1個光らせる実験をしたが、
Orange Pi ZeroでMOSFET8個を制御する実験やった。
1秒毎に2個ずつ光るLEDが変わる。
ミニブレッドボード4個は全部同じでハーフブリッジ回路?にした。
MOSFETは8個だが2個は同時にON/OFFするんでGPIOは4本。
12,11,6,1のGPIO使った。6と1の間にはGNDがあるんで1ピン飛ぶ。
MOSFETは全部Nチャネルだが、半分Pチャネルにすれば2本で制御できると思ってる。
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);
}
↑ソースコードはこんな感じ。#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にしてモーターで実験したい。