このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されていま。
すべてのLED が一個ずつ順番に1秒ずつ点灯するプログラムを書きなさ い。
最初、LEDが一つだけ点灯し、その後、一秒ごとに一つずつ光るLED増え ていき、全点灯したら、最初に戻るプログラムを書きなさい。
すべてのLEDが一個ずつ順番に1秒ずつ点灯するが、ボタンを押している 間は消灯するプログラムを書きなさい
最初、LEDが一つだけ点灯し、その後、押ボタンを押すたびに一つずつ光るLED増え ていき、全点灯したら、最初に戻るプログラムを書きなさい。
7SEG LED に 0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F が一秒ごとに光り、 また最初に戻るプログラムを書きなさい
7SEG LED に 0 を表示し、右のボタンを押したら数が 1,2,3,4,5,6,7,8,9,A,b,C,d,E,F,0,1 ... と一つずつ増え、左のボタンを押した ら F,E,d,C,b,A,9,8,7,6,5,4,3,2,1,0,F,E ... と減るようなプログラムを書きなさい
すべてのLED が一個ずつ順番に1秒ずつ点灯するプログラムを書きなさ い。
const byte out[]={6,7,8,9,10,11,12,13,A0,A1,A2,A3,0xff};
void setup() {
for(byte i=0;out[i]!=0xff;i++){
pinMode(out[i], OUTPUT);
}
}
byte prev=out[0];
byte i=0;
void loop() {
digitalWrite(prev,LOW);
digitalWrite(prev=out[i++],HIGH);
if(out[i]==0xff){
i=0;
}
delay(1000);
}
最初、LEDが一つだけ点灯し、その後、一秒ごとに一つずつ光るLED増え ていき、全点灯したら、最初に戻るプログラムを書きなさい。
const byte out[]={6,7,8,9,10,11,12,13,A0,A1,A2,A3,0xff};
void setup() {
for(byte i=0;out[i]!=0xff;i++){
pinMode(out[i], OUTPUT);
}
}
void clear(){
for(byte i=0;out[i]!=0xff;i++){
digitalWrite(out[i], LOW);
}
}
byte i=0;
void loop() {
digitalWrite(out[i++],HIGH);
delay(1000);
if(out[i]==0xff){
i=0;
clear();
}
}
すべてのLEDが一個ずつ順番に1秒ずつ点灯するが、ボタンを押している 間は消灯するプログラムを書きなさい
const static int tmax=10000;
const byte out[]={6,7,8,9,10,11,12,13,A0,A1,A2,A3,0xff};
byte buf[sizeof(out)]={LOW};
const byte button1=4;
const byte button2=5;
void setup() {
for(byte i=0;out[i]!=0xff;i++){
pinMode(out[i], OUTPUT);
}
pinMode(button1,INPUT_PULLUP);
pinMode(button2,INPUT_PULLUP);
}
void writeArray(bool cond){
for(byte i=0; out[i]!=0xff;i++){
digitalWrite(out[i],cond?buf[i]:LOW);
}
}
void next(){
static byte i=0;
static byte prev=0;
buf[prev]=LOW;
buf[prev=i++]=HIGH;
if(out[i]==0xff){
i=0;
}
}
void loop() {
static bool prev=HIGH;
static bool now=HIGH;
static bool condition=HIGH;
static int t = 0;
if(++t>tmax){
t=0;
next();
}
now=digitalRead(button2);
if(now==HIGH && prev==LOW){
condition ^= true;
}
prev=now;
writeArray(condition == digitalRead(button1));
}
最初、LEDが一つだけ点灯し、その後、押ボタンを押すたびに一つずつ光るLED増え ていき、全点灯したら、最初に戻るプログラムを書きなさい。
/* ex64 */
const byte out[]={6,7,8,9,10,11,12,13,A0,A1,A2,A3,0xff};
byte buf[sizeof(out)]={LOW};
const byte button1=4;
const byte button2=5;
void setup() {
for(byte i=0;out[i]!=0xff;i++){
pinMode(out[i], OUTPUT);
}
pinMode(button1,INPUT_PULLUP);
pinMode(button2,INPUT_PULLUP);
}
void writeArray(bool cond){
for(byte i=0; out[i]!=0xff;i++){
digitalWrite(out[i],cond?buf[i]:LOW);
}
}
byte p=0;
void increase(){
if(out[p]==0xff){
p=0;
}else{
p++;
}
write();
}
void decrease(){
if(p==0){
p=sizeof(out)-1;
}else{
p--;
}
write();
}
void write(){
bool cond=HIGH;
if(out[p]==0xff){
cond=LOW;
}
for(byte i=0;out[i]!=0xff; i++){
digitalWrite(out[i],cond & (i<=p));
}
}
void loop() {
static bool prev1=HIGH;
static bool prev2=HIGH;
static bool now1=HIGH;
static bool now2=HIGH;
now1=digitalRead(button1);
if(now1==HIGH && prev1==LOW){
decrease();
}
prev1=now1;
now2=digitalRead(button2);
if(now2==HIGH && prev2==LOW){
increase();
}
prev2=now2;
}
7SEG LED に 0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F が一秒ごとに光り、 また最初に戻るプログラムを書きなさい
const byte out7seg[]={6,7,8,9,10,11,12,13,0xff};
const byte pattern[]={
0b11011110, //0
0b10010000, //1
0b11001101, //2
0b11011001, //3
0b10010011, //4
0b01011011, //5
0b01011111, //6
0b11010000, //7
0b11011111, //8
0b11011011, //9
0b11010111, //A
0b00011111, //b
0b01001110, //C
0b10011101, //d
0b01001111, //E
0b01000111 //F
};
const byte button1=4;
const byte button2=5;
void setup() {
for(byte i=0;out7seg[i]!=0xff;i++){
pinMode(out7seg[i], OUTPUT);
}
pinMode(button1,INPUT_PULLUP);
pinMode(button2,INPUT_PULLUP);
}
void write7seg(byte x){
for(byte i=0; i<8;i++){
digitalWrite(out7seg[i],(pattern[x]&1<<i)!=0);
}
}
byte j=0;
void loop() {
write7seg(j++);
delay(1000);
if(j>=sizeof(pattern)){
j=0;
}
}
7SEG LED に 0 を表示し、右のボタンを押したら数が 1,2,3,4,5,6,7,8,9,A,b,C,d,E,F,0,1 ... と一つずつ増え、左のボタンを押した ら F,E,d,C,b,A,9,8,7,6,5,4,3,2,1,0,F,E ... と減るようなプログラムを書きなさい
const byte out7seg[]={6,7,8,9,10,11,12,13,0xff};
const byte pattern[]={
0b11011110, //0
0b10010000, //1
0b11001101, //2
0b11011001, //3
0b10010011, //4
0b01011011, //5
0b01011111, //6
0b11010000, //7
0b11011111, //8
0b11011011, //9
0b11010111, //A
0b00011111, //b
0b01001110, //C
0b10011101, //d
0b01001111, //E
0b01000111 //F
};
const byte button1=4;
const byte button2=5;
void write();
void setup() {
for(byte i=0;out7seg[i]!=0xff;i++){
pinMode(out7seg[i], OUTPUT);
}
pinMode(button1,INPUT_PULLUP);
pinMode(button2,INPUT_PULLUP);
write();
}
void write7seg(byte x){
for(byte i=0; i<8;i++){
digitalWrite(out7seg[i],(pattern[x]&1<<i)!=0);
}
}
byte p=0;
void increase(){
if(p>=sizeof(pattern)-1){
p=0;
}else{
p++;
}
write();
}
void decrease(){
if(p==0){
p=sizeof(pattern)-1;
}else{
p--;
}
write();
}
void write(){
write7seg(p);
}
void loop() {
static bool prev1=HIGH;
static bool prev2=HIGH;
static bool now1=HIGH;
static bool now2=HIGH;
now1=digitalRead(button1);
if(now1==HIGH && prev1==LOW){
decrease();
}
prev1=now1;
now2=digitalRead(button2);
if(now2==HIGH && prev2==LOW){
increase();
}
prev2=now2;
}