char piliTable1[] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
char piliTable2[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
char piliTable3[] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40};
char piliTable4[] = {0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff};
char piliPin[] = {2, 3, 4, 5, 6, 7, 8, 9};
char sw1 = 10;
char sw2 = 11;
char sw3 = 12;
char sw4 = 13;
int counter1 = 0;
int counter2 = 0;
int counter3 = 0;
int counter4 = 0;
int number1;
int number2;
int number3;
int number4;
unsigned long time1 = 0;
unsigned long time2 = 0;
unsigned long time3 = 0;
unsigned long time4 = 0;
int state1 = 0;
int state2 = 0;
int state3 = 0;
int state4 = 0;
void setup()
{
int i;
for (i = 0; i < 8; i++)
{
pinMode(piliPin[i], OUTPUT);
digitalWrite(piliPin[i], LOW);
}
digitalWrite(sw1, INPUT);
digitalWrite(sw2, INPUT);
digitalWrite(sw3, INPUT);
digitalWrite(sw4, INPUT);
}
void loop()
{
int val1;
int val2;
int val3;
int val4;
int i;
val1 = digitalRead(sw1);
{
if (val1 == 0)
{
delay(20);
while (digitalRead(sw1) == LOW);
state1 = 1;
state2 = 0;
state3 = 0;
state4 = 0;
}
}
//=========================================
val2 = digitalRead(sw2);
{
if (val2 == 0)
{
delay(20);
while (digitalRead(sw2) == LOW);
state1 = 0;
state2 = 1;
state3 = 0;
state4 = 0;
}
}
//============================================
val3 = digitalRead(sw3);
{
if (val3 == 0)
{
delay(20);
while (digitalRead(sw3) == LOW);
state1 = 0;
state2 = 0;
state3 = 1;
state4 = 0;
}
}
//============================================
val4 = digitalRead(sw4);
{
if (val4 == 0)
{
delay(20);
while (digitalRead(sw4) == LOW);
state1 = 0;
state2 = 0;
state3 = 0;
state4 = 1;
}
}
//===============================================
if (state1 == 1 && state2 == 0 && state3 == 0 && state4 == 0)
{
number1 = counter1;
for (i = 0; i < 8; i++)
{
if (bitRead(piliTable1[number1 % 8], i))
digitalWrite(piliPin[i], HIGH);
else
digitalWrite(piliPin[i], LOW);
}
if (millis() - time1 >= 500)
{
time1 = millis();
counter1++;
if (counter1 > 7)counter1 = 0;
}
}
//============================================
if (state1 == 0 && state2 == 1 && state3 == 0 && state4 == 0)
{
number2 = counter2;
for (i = 0; i < 8; i++)
{
if (bitRead(piliTable2[number2 % 8], i))
digitalWrite(piliPin[i], HIGH);
else
digitalWrite(piliPin[i], LOW);
}
if (millis() - time2 >= 500)
{
time2 = millis();
counter2++;
if (counter2 > 7)counter2 = 0;
}
}
//============================================
if (state1 == 0 && state2 == 0 && state3 == 1 && state4 == 0)
{
number3 = counter3;
for (i = 0; i < 8; i++)
{
if (bitRead(piliTable3[number3 % 13], i))//有13個字型,所以要取餘數13,否則會停在第一格
digitalWrite(piliPin[i], HIGH);
else
digitalWrite(piliPin[i], LOW);
}
if (millis() - time3 >= 500)
{
time3 = millis();
counter3++;
if (counter3 > 13)counter3 = 0;
}
}
//================================================
if (state1 == 0 && state2 == 0 && state3 == 0 && state4 == 1)
{
number4 = counter4;
for (i = 0; i < 8; i++)
{
if (bitRead(piliTable4[number4 % 8], i))//pili燈表4
digitalWrite(piliPin[i], HIGH);
else
digitalWrite(piliPin[i], LOW);
}
if (millis() - time4 >= 500)
{
time4 = millis();
counter4++;
if (counter4 > 7)counter4 = 0;
}
}
}
2020年2月13日 星期四
訂閱:
張貼留言 (Atom)
algorithm
#include <iostream> #include <string.h> using namespace std; int main(int argc, char** argv) { for(int j=2;j<=100;j++)//j...
-
本文旨在補充《 超圖解Arduino互動設計入門 》第18章「RFID無線識別裝置與問答遊戲製作」單元,書本採用的RFID讀卡機模組是採用9600bps, TTL序列通訊介面,RFID的通訊頻率為125KHz。這種模組的接線和程式都很簡單,每當感測到RFID卡,讀卡機就把...
-
3.Keil C 幫我們寫好 程式:#include <reg51.h> vs c語言 #include <stdio.h> //幫您宣告 P0=0x80 有相對的記憶體以十六進位表示,它定義定reg51.h,我們直接拿來用他的代碼即可 P1=0...
-
/* 多重按鈕開關 */ //==宣告區================================ #include // 定義8051暫存器之標頭檔,P2-17~19 #include "myio.h" // 自己寫的I/O程式庫 sbit PB...
沒有留言:
張貼留言