2021年7月31日 星期六

按1,一直加1

 int btn=9;

int seg7_pin[]={2,3,4,5,6,7,8};

char seg7_table[]={~0xc0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90};

int i;

int j;

int k;

int num;

int val;

void setup()

{

  pinMode(btn,INPUT);//pinMode(btn,OUTPUT)complier無法知道error

  for(i=0;i<7;i++)

  {

    pinMode(seg7_pin[i],OUTPUT);

  }

}

//--------------------------------------

void outport(char data)

{

  for(k=0;k<7;k++)

  {

    if(data % 2 ==1)

     digitalWrite(seg7_pin[k],HIGH);

    else

     digitalWrite(seg7_pin[k],LOW);

    data=data/2;

  }

}

//---------------------------------------

void loop()

{

  val=digitalRead(btn);

  if(val==LOW)

  {

    delay(20);

    while(digitalRead(btn)==LOW);

    if(num==10)

     num=0;

    else 

     num++;

  }

  outport(seg7_table[num]); 

}

auto 0~9 7seg

 int btn=9;

int seg7_pin[]={2,3,4,5,6,7,8};

char seg7_table[]={~0xc0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90};

int i;

int j;

int k;

int val;

void setup()

{

  pinMode(btn,9);

  for(i=0;i<7;i++)

  {

    pinMode(seg7_pin[i],OUTPUT);

  }

}

//--------------------------------------

void outport(char data)

{

  for(k=0;k<7;k++)

  {

    if(data % 2 ==1)

     digitalWrite(seg7_pin[k],HIGH);

    else

     digitalWrite(seg7_pin[k],LOW);

    data=data/2;

  }

}

//---------------------------------------

void loop()

{

  for(i=0;i<10;i++)

  {

   outport(seg7_table[i]); 

   delay(1000);

  }

}

Serial.write p6-7

 int val1=65;

int val2=97;

int i;

int times=0;

void setup()

{

 Serial.begin(9600);

}


void loop()

{

 if(times==0)

 {

  times=1;

  for(i=0;i<26;i++)

  {

   Serial.write(val1+i);

   Serial.print('=');  

   Serial.println(val1+i);

   delay(200);

  }

  for(i=0;i<26;i++)

  {

   Serial.write(val2+i);

   Serial.print('=');  

   Serial.println(val2+i);

   delay(200);

  }

 }

}

6-7 fr Arduino 板傳送訊息至電腦實習

 int value=97;

int times=0;

int i;

void setup()

{

 Serial.begin(9600);

}


void loop()

{

 if(times==0)

 {

  times=1;

  for(i=0;i<26;i++)

  {

    Serial.write(value+i);

    Serial.print('='); 

    Serial.println(value+i);

    delay(500);

  }

 }

}

ex 5-15

 int btn=2;

int led[]={3,4,5,6};

int i;

int j=0;

int value;

int direct;

void setup()

{

 pinMode(btn,INPUT);

 for(i=0;i<4;i++)

 {

  pinMode(led[i],OUTPUT);

 }

}


void loop()

{

  for(i=0;i<4;i++)

 {

  digitalWrite(led[i],LOW);

 }

 value=digitalRead(btn);

 if(value==LOW)

 {

  delay(20);

  while(digitalRead(btn)==LOW);

  direct=direct^1;

 }

 if(direct==0)

 {

  digitalWrite(led[j],HIGH);

  delay(1000);

  if(j==3)

   j=0;

  else

   j++;

 }

 else if(direct==1)

 {

  digitalWrite(led[j],HIGH);

  delay(1000);

  if(j==0)

   j=3;

  else

   j--;

 }

}

ex 5-6

 int btn=2;

int led[]={3,4,5,6};

int direct=0;

int i;

int j=0;

int value;

void setup() 

{

 for(i=0;i<4;i++)

 {

  pinMode(led[i],OUTPUT); 

 }

 pinMode(btn,INPUT);

}


void loop()

{

  for(i=0;i<4;i++)

  {

   digitalWrite(led[i],LOW); 

  }

  value=digitalRead(btn);

  if(value==LOW)

  {

    delay(25);

    while(digitalRead(btn)==LOW);

    direct=direct^1;

  }

  if(direct==0)

  { 

    digitalWrite(led[j],HIGH); 

    delay(1000);

    if(j>3)

     j=0;

    else

     j++;  

  }

  else

  {

    digitalWrite(led[j],HIGH); 

    delay(1000);

   if(j<0)

    j=3;

   else 

    j--;    

  }

}

ex buzzer

 int buzzer=2;

int times=0;

void setup() 

{

 pinMode(buzzer,OUTPUT);

}


void loop()

{

 if(times==0)

 {

  tone(buzzer,500,300);delay(1000);

  tone(buzzer,500,300);delay(1000);

  times=1;

 }

}

tone buzzer

 int buzzer=13;

int dip_sw[]={2,3,4,5};

char seg7_table[]={

                   ~0xc0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90,

                   ~0x88,~0x83,~0xc6,~0xa1,~0x86,~0x8e};

int seg7_pin[]={6,7,8,9,10,11,12};

int weight[]={8,4,2,1};

int value;

int number;

int i,j,k;

void setup()

{

 for(i=0;i<7;i++)

 {

   pinMode(seg7_pin[i],OUTPUT);

 }

 for(j=0;j<4;j++)

 {

  pinMode(dip_sw[j],INPUT);

 }

 pinMode(buzzer,OUTPUT);

 tone(buzzer,500,200);delay(1000);

 tone(buzzer,500,200);delay(1000);

}

void outport(char data)

{

  for(i=0;i<7;i++)

  {

    if(data % 2 ==1)

     digitalWrite(seg7_pin[i],HIGH);

    else 

     digitalWrite(seg7_pin[i],LOW);

    data=data/2;

  }

}

void loop()

{

  number=0;

  for(i=0;i<4;i++)

  {

    value=digitalRead(dip_sw[i]);

    if(value==HIGH)

    {

      number=number+weight[i];

    }

  }

  outport(seg7_table[number]);

}

ex 8-11

 int dip_sw[]={2,3,4,5};

char seg7_table[]={

                   ~0xc0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90,

                   ~0x88,~0x83,~0xc6,~0xa1,~0x86,~0x8e};

int seg7_pin[]={6,7,8,9,10,11,12};

int weight[]={8,4,2,1};

int value;

int number;

int i,j;

void setup()

{

 for(i=0;i<7;i++)

 {

   pinMode(seg7_pin[i],OUTPUT);

 }

 for(j=0;j<4;j++)

 {

  pinMode(dip_sw[j],INPUT);

 }

}

void outport(char data)

{

  for(i=0;i<7;i++)

  {

    if(data % 2 ==1)

     digitalWrite(seg7_pin[i],HIGH);

    else 

     digitalWrite(seg7_pin[i],LOW);

    data=data/2;

  }

}

void loop()

{

  number=0;

  for(i=0;i<4;i++)

  {

    value=digitalRead(dip_sw[i]);

    if(value==HIGH)

    {

      number=number+weight[i];

    }

  }

  outport(seg7_table[number]);

}

p8-13 七段顯示器

 int dip[]={2,3,4,5};

int weight[]={8,4,2,1};

char seg7table[]={~0xc0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90,

                ~0x88,~0x83,~0xc6,~0xa1,~0x86,~0x8e};

int seg7[]={6,7,8,9,10,11,12};

int i;

int j;

int number;

int value;

void setup()

{

 for(i=0;i<7;i++)

 {

  pinMode(seg7[i],OUTPUT);

 }

 for(j=0;j<4;j++)

 {

  pinMode(dip[j],INPUT);

 }

}

//---------------------------------------

void outport(char data)

{

  for(j=0;j<7;j++)

  {

    if(data %2 ==1)

     digitalWrite(seg7[j],HIGH);

    else

      digitalWrite(seg7[j],LOW);

    data=data/2;

  }

}

//-----------------------------------------

void loop()

{

 number=0;

 for(i=0;i<4;i++)

 {

  value=digitalRead(dip[i]);

  if(value==HIGH)

  number=number+weight[i];

 }

 outport(seg7table[number]);

}

2021年7月30日 星期五

ledState=ledState^1 1 xor A=反相bar

 int btn=2;

int led =3;

int value;

int ledState=0;

void setup() 

{

   pinMode(btn,INPUT);

   pinMode(led,OUTPUT);

}


void loop() 

{

 value=digitalRead(btn);

 if(value==LOW)

 {

  delay(20);

  while(digitalRead(btn)==LOW);

  ledState=ledState^1;

  digitalWrite(led,ledState);

 }

}

練習dip sw

 int led[]={4,5,6,7};

int sw1=2;

int sw2=3;

int i;

int j;

int value1,value2;

void setup()

{

 pinMode(sw1,INPUT);

 pinMode(sw2,INPUT);

 for(i=0;i<4;i++)

 {

  pinMode(led[i],OUTPUT);

 }

}


void loop() 

{

  for(i=0;i<4;i++)

 {

  digitalWrite(led[i],LOW);

 }

 value1=digitalRead(sw1);

 value2=digitalRead(sw2);

 if(value1==HIGH && value2==LOW)

 {

  digitalWrite(led[j],HIGH); delay(200);

  digitalWrite(led[j],LOW); delay(200);

  if(j==3)

   j=0;

  else

   j++;

 }

 else if(value1==LOW && value2==HIGH)

 {

  digitalWrite(led[j],HIGH); delay(200);

  digitalWrite(led[j],LOW); delay(200);

  if(j==0)

   j=3;

  else

   j--;

 }

}

p5-11 ex2

 int led[]={3,4,5,6};

int sw=2;

int i;

int j;

int value;

void setup()

{

 pinMode(sw,INPUT);

 for(i=0;i<4;i++)

 {

  pinMode(led[i],OUTPUT);

 }

}


void loop() 

{

  for(i=0;i<4;i++)

 {

  digitalWrite(led[i],LOW);

 }

 value=digitalRead(sw);

 if(value==HIGH)

 {

  digitalWrite(led[j],HIGH); delay(200);

  digitalWrite(led[j],LOW); delay(200);

  if(j==3)

   j=0;

  else

   j++;

 }

 else

 {

  digitalWrite(led[j],HIGH);  delay(200);

  digitalWrite(led[j],LOW);  delay(200);

 }

}

P5-9練習

 int led[]={3,4,5,6};

int sw=2;

int i;

int j;

int value;

void setup()

{

 pinMode(sw,INPUT);

 for(i=0;i<4;i++)

 {

  pinMode(led[i],OUTPUT);

 }

}


void loop() 

{

  for(i=0;i<4;i++)

 {

  digitalWrite(led[i],LOW);

 }

 value=digitalRead(sw);

 if(value==HIGH)

 {

  digitalWrite(led[j],HIGH);

  delay(200);

  if(j==3)

   j=0;

  else

   j++;

 }

 else

 {

  digitalWrite(led[j],HIGH);

  delay(200);

  if(j==0)

   j=3;

  else

   j--;

 }

}

P5-6 ex2

 int led1=3;

int led2=4;

int sw=2;

int value=0;

void setup() 

{

 pinMode(led1,OUTPUT);

 pinMode(led2,OUTPUT);

 pinMode(sw,INPUT);

}


void loop()

{

 value=digitalRead(sw);

 if(value==HIGH)

 {

   digitalWrite(led1,HIGH);digitalWrite(led2,LOW);delay(200);

   digitalWrite(led1,LOW);digitalWrite(led2,HIGH);delay(200);

 }

 else

  digitalWrite(led1,LOW);

}

ex2 (P5-5)

 int led =3;

int sw=2;

int value;

void setup()

{

 pinMode(led,OUTPUT);

 pinMode(sw,INPUT);

}


void loop()

{

  value=digitalRead(sw);

  if(value==HIGH)

  {

     digitalWrite(led,HIGH);   delay(200);

     digitalWrite(led,LOW);   delay(200);

  }

  else

  {

     digitalWrite(led,HIGH);   delay(1000);

     digitalWrite(led,LOW);   delay(1000);

  }

}

ex led

 int i;

void setup() 

{

 pinMode(3,OUTPUT);

 pinMode(5,OUTPUT);

 pinMode(6,OUTPUT);

 pinMode(9,OUTPUT);

}

void led3()

{

  for(i=0;i<255;i++)

  {

    analogWrite(3,i);

    delay(20);

  }

  for(i=255;i>=0;i--)

  {

    analogWrite(3,i);

    delay(20);

  }

}

//-----------------------------

void led5()

{

  for(i=0;i<255;i++)

  {

    analogWrite(5,i);

    delay(20);

  }

  for(i=255;i>=0;i--)

  {

    analogWrite(5,i);

    delay(20);

  }

}

void led6()

{

  for(i=0;i<255;i++)

  {

    analogWrite(6,i);

    delay(20);

  }

  for(i=255;i>=0;i--)

  {

    analogWrite(6,i);

    delay(20);

  }

}

//-----------------------------

void led9()

{

  for(i=0;i<255;i++)

  {

    analogWrite(9,i);

    delay(20);

  }

  for(i=255;i>=0;i--)

  {

    analogWrite(9,i);

    delay(20);

  }

}

void loop()

{

 led3();

 led5();

 led6();

 led9();

}

call 4次 呼吸燈

 int led[]={3,5,6,9};

void setup() 

{

pinMode(3,OUTPUT);

pinMode(5,OUTPUT);

pinMode(6,OUTPUT);

pinMode(9,OUTPUT);

}

//-------------------------------------------------

void led0()

{

   for(int i=0;i<=255;i++)//呼吸燈slow變亮

  {

    analogWrite(3,i);

    delay(10);

  }

  for(int i=255;i>=0;i--)//呼吸燈slow變暗

  {

    analogWrite(3,i);

    delay(10);

  }

}

//-------------------------------------------------

void led1()

{

   for(int i=0;i<=255;i++)//呼吸燈slow變亮

  {

    analogWrite(5,i);

    delay(10);

  }

  for(int i=255;i>=0;i--)//呼吸燈slow變暗

  {

    analogWrite(5,i);

    delay(10);

  }

}

//-----------------------------------------------------

void led2()

{

   for(int i=0;i<=255;i++)//呼吸燈slow變亮

  {

    analogWrite(6,i);

    delay(10);

  }

  for(int i=255;i>=0;i--)//呼吸燈slow變暗

  {

    analogWrite(6,i);

    delay(10);

  }

}

//-------------------------------------------------

void led3()

{

   for(int i=0;i<=255;i++)//呼吸燈slow變亮

  {

    analogWrite(9,i);

    delay(10);

  }

  for(int i=255;i>=0;i--)//呼吸燈slow變暗

  {

    analogWrite(9,i);

    delay(10);

  }

}

void loop()

{

  led0();

  led1();

  led2();

  led3();

}

led一個燈一個燈的亮

 int led[]={2,3,4,5,6};

char ledmap[5][5]=

{

 {1,0,0,0,0},

 {1,1,0,0,0},

 {1,1,1,0,0},

 {1,1,1,1,0},

 {1,1,1,1,1}  

};

int i,j,k;

void setup() 

{

  for(i=0;i<5;i++)

  {

   pinMode(led[i],OUTPUT);

  }

}


void loop() 

{

 for(i=0;i<6;i++)

 {

  digitalWrite(led[i],LOW);

 }

 delay(20);

 for(j=0;j<5;j++)

 {

  for(k=0;k<5;k++)

   {

    if(ledmap[j][k]==1)

     digitalWrite(led[k],HIGH);

   }

   delay(200);

 }

}

led燈一個一個點亮

 const int led[]={2,3,4,5};

int i;

int j;

int k;

const int ledmap[4][4]=

{  {1,0,0,0},

   {1,1,0,0},

   {1,1,1,0},

   {1,1,1,1}}; 

void setup() 

{    

  for(i=0;i<4;i++)

    pinMode(led[i],OUTPUT);

}

void loop() 

{

  for(i=0;i<4;i++)

  {    

    for(j=0;j<4;j++)

    {

      if(ledmap[i][j]==1)

//[0][0]

//[1][0] [1][1]

//[2][0] [2][1] [2][2]  

//[3][0] [3][1] [3][2] [3][3]為1其他為0

      {

        digitalWrite(led[j],HIGH);

      }

      delay(100);      

    } 

  }

  delay(400);//停個0.4秒

  for(k=0;k<4;k++)//再把所有led關閉

     digitalWrite(led[k],LOW);  

}

2021年7月11日 星期日

繞三圈停止 四位數七段顯示器 從最左邊的a出發結束也在a停止


 

unsigned long time1=0;

unsigned long time2=0;

int seg7[] = {2, 3, 4, 5, 6, 7, 8};

char seg_7_table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff};

//                   a    b     c   d    e    f   

int scan_line[] = {9,10,11,12};

char bcd[]={6,6,6,6};//一開機,先清除畫面

int i, j=0,cnt;

int x=0;

//-----------------------------------------------------------------------------


void setup()

{

  for (i = 0; i < 8; i++)

  {

    pinMode(seg7[i], OUTPUT);//資料端

  }

  for (i = 0; i < 4; i++)

  {

    pinMode(scan_line[i], OUTPUT);//掃瞄端

  }

}

//-----------------------------------------------------------------------------

void tx(byte data)

{

   for (int j=0; j<7; j++) {

    if (data % 2==1)  // 取出 data 的最低位元

      digitalWrite(seg7[j], LOW);  

    else

      digitalWrite(seg7[j], HIGH);   

    data=data/2;  // 除2,進行下一位元的處理

  } 

}

//-----------------------------------------------------------------------------

void display()

{

  if(millis()-time1>5)

  {

      time1=millis();

      tx(seg_7_table[bcd[j]]);

      digitalWrite(scan_line[j],HIGH);

      delay(1);

      digitalWrite(scan_line[j],LOW);

     j++;

     if(j==4)

      j=0;

  }

  

  if(millis()-time2>500)

  {

   time2=millis();

   cnt++;

   if(cnt>11)

    cnt=0; 

  }

   if(cnt==0){bcd[3]=0; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=6; }

   if(cnt==1){bcd[3]=6; bcd[2]=0 ; bcd[1]=6 ; bcd[0]=6; }

   if(cnt==2){bcd[3]=6; bcd[2]=6 ; bcd[1]=0 ; bcd[0]=6; }

   if(cnt==3){bcd[3]=6; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=0; }

   if(cnt==4){bcd[3]=6; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=1; }

   if(cnt==5){bcd[3]=6; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=2; }

   if(cnt==6){bcd[3]=6; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=3; }

   if(cnt==7){bcd[3]=6; bcd[2]=6 ; bcd[1]=3 ; bcd[0]=6; }

   if(cnt==8){bcd[3]=6; bcd[2]=3 ; bcd[1]=6 ; bcd[0]=6; }

   if(cnt==9){bcd[3]=3; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=6; }

   if(cnt==10){bcd[3]=4; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=6; }

   if(cnt==11){bcd[3]=5; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=6; }

}

void loop()

{

  

  if(x==0)

  {

   display();

   if(time1>=18500 || time2>=18500)//關閉time1 或 time2 (12*500)*3(跑三次,跑一輪)+500(還要在a stop所以加500=18500

   {

    for(int b=0;b<4;b++)

    {

      digitalWrite(scan_line[j],LOW);

    }

    x=1;

   }

  }

}

四位七段顯示器 順時針

 unsigned long time1=0;

unsigned long time2=0;

int seg7[] = {2, 3, 4, 5, 6, 7, 8};

char seg_7_table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff};

//                   a    b     c   d    e    f   

int scan_line[] = {9,10,11,12};

char bcd[]={6,6,6,6};//一開機,先清除畫面

int i, j=0,cnt;

//-----------------------------------------------------------------------------

void setup()

{

  for (i = 0; i < 8; i++)

  {

    pinMode(seg7[i], OUTPUT);//資料端

  }

  for (i = 0; i < 4; i++)

  {

    pinMode(scan_line[i], OUTPUT);//掃瞄端

  }

}

void tx(byte data)

{

   for (int j=0; j<7; j++) {

    if (data % 2==1)  // 取出 data 的最低位元

      digitalWrite(seg7[j], LOW);  

    else

      digitalWrite(seg7[j], HIGH);   

    data=data/2;  // 除2,進行下一位元的處理

  } 

}

//-----------------------------------------------------------------------------

void loop()

{

  if(millis()-time1>5)

  {

      tx(seg_7_table[bcd[j]]);

      digitalWrite(scan_line[j],HIGH);

      delay(1);

      digitalWrite(scan_line[j],LOW);

     j++;

     if(j==4)

      j=0;

  }

  

  if(millis()-time2>1000)

  {

   time2=millis();

   cnt++;

   if(cnt>11)

    cnt=0; 

  }

   if(cnt==0){bcd[3]=0; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=6; }

   if(cnt==1){bcd[3]=6; bcd[2]=0 ; bcd[1]=6 ; bcd[0]=6; }

   if(cnt==2){bcd[3]=6; bcd[2]=6 ; bcd[1]=0 ; bcd[0]=6; }

   if(cnt==3){bcd[3]=6; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=0; }

   if(cnt==4){bcd[3]=6; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=1; }

   if(cnt==5){bcd[3]=6; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=2; }

   if(cnt==6){bcd[3]=6; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=3; }

   if(cnt==7){bcd[3]=6; bcd[2]=6 ; bcd[1]=3 ; bcd[0]=6; }

   if(cnt==8){bcd[3]=6; bcd[2]=3 ; bcd[1]=6 ; bcd[0]=6; }

   if(cnt==9){bcd[3]=3; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=6; }

   if(cnt==10){bcd[3]=4; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=6; }

   if(cnt==11){bcd[3]=5; bcd[2]=6 ; bcd[1]=6 ; bcd[0]=6; }

}

先千位元7seg順時針繞

 int seg7[] = {2, 3, 4, 5, 6, 7, 8};

char com3[]={  0xFE,0xFD,0xFB,0xF7,0xEF,0xDF };


int com[] = {9,10,11,12};

int i, j;


//-----------------------------------------------------------------------------

void setup()

{

  for (i = 0; i < 8; i++)

  {

    pinMode(seg7[i], OUTPUT);//資料端

  }

  for (i = 0; i < 4; i++)

  {

    pinMode(com[i], OUTPUT);//掃瞄端

  }

}

void tx(byte data)

{

   for (int j=0; j<7; j++) {

    if (data % 2==1)  // 取出 data 的最低位元

      digitalWrite(seg7[j], LOW);  

    else

      digitalWrite(seg7[j], HIGH);   

    data=data/2;  // 除2,進行下一位元的處理

  } 

}

//-----------------------------------------------------------------------------

void loop()

{

int b;

    digitalWrite(12,HIGH);

    for (b = 0; b < 6; b++) //千位數 com3 

    {

      tx(com3[b]);delay(500);

    }

}

四個dip sw 7seg display

 int DIP[] = { 10,11,12,13 };

int Weight[] = { 8, 4, 2, 1};

int seg7[] = {2,3,4,5,6,7,8,9};

char seg7Table[]=

   B11000000,  //0

   B11111001,  //1

   B10100100,  //2

   B10110000,  //3

   B10011001,  //4

   B10010010,  //5

   B10000010,  //6

   B11111000,  //7    

   B10000000,  //8

   B10010000,  //9   

   B10001000,  //A

   B10000011,  //B

   B11000110,  //C

   B10100001,  //D

   B10000110,  //E

   B10001110   //F

};

int i,j;    // 迴圈用的變數

int num;

void OutPort(byte dat)

{

  for(j=0;j<8;j++)

  {

    if(bitRead(dat,j))      

     digitalWrite(seg7[j],LOW);

     else

     digitalWrite(seg7[j],HIGH);

  }    

}

void setup() {                

  for (i=0; i<7; i++) {

     pinMode(seg7[i], OUTPUT);

  }

  for (i=0; i<4; i++) {

     // 設定 DIP 為輸入腳位,且致能內部提昇電阻

     pinMode(DIP[i], INPUT);

     digitalWrite(DIP[i], HIGH);

  }

}

void loop() 

{

  num=0;

  for (i=0; i<4; i++) 

  {

      int reading = digitalRead(DIP[i]);      // 讀取指撥開關狀態

      if (reading == HIGH) num = num + Weight[i]; 

  }

  OutPort(seg7Table[num]);        // 取出陣列中對應的數字編碼表

 }

順時針 圖片

 


2021年7月10日 星期六

一開機閃2021三次,再led1亮滅

 int seg7[] = {2,3,4,5,6,7,8};

int scan[] = { 13, 12, 11, 10 };

int table_7seg[]=

{

  0xc0,0xf9,0xa4,0xb0,

  0x99,0x92,0x82,0xf8,

  0x80,0x90 };

int i,j;    // 迴圈用的變數

//--------------------------------------------------------------------------------------

void OutPort(byte dat)

{

  for (j=0; j<7; j++) {

    if (dat % 2==1)  // 取出 dat 的最低位元

      digitalWrite(seg7[j], LOW);  // 若為 1 代表該段要亮, 輸出高準位

    else

      digitalWrite(seg7[j], HIGH);   // 若為 0 代表該段要滅, 輸出低準位

    dat=dat/2;  // 除2,進行下一位元的處理

  }  

}

//-------------------------------------------------------------------------------------------

void blink_3time()

{

  for(int a=0;a<4;a++)

  {

    for(int b=0;b<50;b++)

    {

      OutPort(table_7seg[2]);//顯示千位數

      digitalWrite(scan[0], HIGH);    delay(5);  digitalWrite(scan[0], LOW);//com1  

      OutPort(table_7seg[0]);//顯示百位數

      digitalWrite(scan[1], HIGH);    delay(5);  digitalWrite(scan[1], LOW); //com2

      OutPort(table_7seg[2]);//顯示十位數

      digitalWrite(scan[2], HIGH);    delay(5);  digitalWrite(scan[2], LOW);//com3

      OutPort(table_7seg[1]);//顯示個位數                

      digitalWrite(scan[3], HIGH);    delay(5);  digitalWrite(scan[3], LOW); //com4

    }

    for(int c=0;c<4;c++)

    {

      digitalWrite(scan[c],LOW);

    }

    delay(500);

  }

}

//----------------------------------------------------------------------------------------

void setup()

{              

  pinMode(9,OUTPUT);  //此處沒設定輸出,led會微亮不會全亮

  for (i=0; i<7; i++) {

     pinMode(seg7[i], OUTPUT);

  }

  for (i=0; i<4; i++) {

     pinMode(scan[i], OUTPUT);

     digitalWrite(scan[i], LOW);  // 掃描端電晶體 OFF

  }

  blink_3time();

}

//--------------------------------------------------------------------------------------------

void loop() 

{

 digitalWrite(9,HIGH);delay(1000);

 digitalWrite(9,LOW);delay(1000);

}

display 2021

 int seg7[] = {2,3,4,5,6,7,8,9};

int scan[] = { 13, 12, 11, 10 };

int delaytime=5;

int table_7seg[]=

{

  0xc0,0xf9,0xa4,0xb0,

  0x99,0x92,0x82,0xf8,

  0x80,0x90 };

int i,j;    // 迴圈用的變數

int ScanLine=0;

void setup()

{                

  for (i=0; i<8; i++) {

     pinMode(seg7[i], OUTPUT);

  }

  for (i=0; i<4; i++) {

     pinMode(scan[i], OUTPUT);

     digitalWrite(scan[i], LOW);  // 掃描端電晶體 OFF

  }

  Serial.begin(9600);

}

void loop() 

{

  OutPort(table_7seg[2]);

  digitalWrite(scan[0], HIGH);    delay(delaytime);  digitalWrite(scan[0], LOW);  

  OutPort(table_7seg[0]);

  digitalWrite(scan[1], HIGH);    delay(delaytime);  digitalWrite(scan[1], LOW); 

  OutPort(table_7seg[2]);

  digitalWrite(scan[2], HIGH);    delay(delaytime);  digitalWrite(scan[2], LOW);

  OutPort(table_7seg[1]);                

  digitalWrite(scan[3], HIGH);    delay(delaytime);  digitalWrite(scan[3], LOW);  

}


void OutPort(byte dat)

{

  for (j=0; j<8; j++) {

    if (dat % 2==1)  // 取出 dat 的最低位元

      digitalWrite(seg7[j], LOW);  // 若為 1 代表該段要亮, 輸出高準位

    else

      digitalWrite(seg7[j], HIGH);   // 若為 0 代表該段要滅, 輸出低準位

    dat=dat/2;  // 除2,進行下一位元的處理

  }  

}

dip_sw 7seg + led display 0~15

 int led[]={14,15,16,17};

int seg7[]={2,3,4,5,6,7,8,9};

int dip_sw[]={13,12,11,10};

int weight[]={8,4,2,1};

int num;

int value;

char table_led[]=

{

  0x0,0x1,0x2,0x3,

  0x4,0x5,0x6,0x7,

  0x8,0xf9,0xfa,0xb,

  0xc,0xd,0xe,0xf

};


char table_7seg[]=

{

  0xc0,0xf9,0xa4,0xb0,

  0x99,0x92,0x82,0xf8,

  0x80,0x90,0x88,0x83,

  0Xc6,0xa1,0x86,0x8E

};

//--------------------------------------------------

void setup() 

{

  // put your setup code here, to run once:

  for(int i=0;i<4;i++)

  {

    pinMode(led[i],OUTPUT);

    digitalWrite(led[i],LOW);

  }

 for(int i=0;i<8;i++)

 {

  pinMode(seg7[i],OUTPUT);

 }

 for(int i=0;i<4;i++)

 {

  pinMode(dip_sw[i],INPUT);

  digitalWrite(dip_sw[i],HIGH);

 }

}

//---------------------------------------------------------

void tx1(byte data1)

{

  for(int j=0;j<8;j++)

  {

   if(data1%2==1)

   {

     digitalWrite(seg7[j],LOW);

   }

   else

   {

     digitalWrite(seg7[j],HIGH);

   }

   data1=data1/2;

  }

}

//---------------------------------------------------------------

void tx2(byte data2)//A0~A3只有四位而已

{

  for(int h=0;h<4;h++)//你寫8會錯,因為你並沒有給他8支腳位scan

  {

   if(data2%2==1)

   {

     digitalWrite(led[h],HIGH);//高電位led就亮

   }

   else

   {

     digitalWrite(led[h],LOW);

   }

   data2=data2/2;//16進制(電腦會自動轉十進制來算)用除2會當十進制

  }

}

//--------------------------------------------------------

void loop()

{

 num=0;

 for(int k=0;k<4;k++)

 {

  value=digitalRead(dip_sw[k]);

  if(value==HIGH)

    num=num+ weight[k];

 }

 tx1(table_7seg[num]);

 tx2(table_led[num]);

}


dip_sw 7seg顯示 0~15

 int seg7[]={2,3,4,5,6,7,8,9};

int dip_sw[]={13,12,11,10};

int weight[]={8,4,2,1};

int num;

int value;

char table_7seg[]=

{

  0xc0,0xf9,0xa4,0xb0,

  0x99,0x92,0x82,0xf8,

  0x80,0x90,0x88,0x83,

  0Xc6,0xa1,0x86,0x8E

};

//--------------------------------------------------

void setup() 

{

  // put your setup code here, to run once:

 for(int i=0;i<8;i++)

 {

  pinMode(seg7[i],OUTPUT);

 }

 for(int i=0;i<4;i++)

 {

  pinMode(dip_sw[i],INPUT);

  digitalWrite(dip_sw[i],HIGH);

 }

}

//---------------------------------------------------------

void tx(byte data)

{

  for(int j=0;j<8;j++)

  {

   if(data%2==1)

     digitalWrite(seg7[j],LOW);

   else

     digitalWrite(seg7[j],HIGH);

   data=data/2;

  }

}

//--------------------------------------------------------

void loop()

{

  // put your main code here, to run repeatedly:

 num=0;

 for(int k=0;k<4;k++)

 {

  value=digitalRead(dip_sw[k]);

  if(value==HIGH)

    num=num+ weight[k];

 }

 tx(table_7seg[num]);

}


2021年7月9日 星期五

btn1 up btn2 up

 int val1;

int val2;

int num;

int cnt=0;

int btnkey=0;

int j;

int seg7[]={2,3,4,5,6,7,8,9};

int sw1=14;

int sw2=15;

int seg7Table[]=

{

    B11000000,  //0

    B11111001,  //1

    B10100100,  //2

    B10110000,  //3

    B10011001,  //4

    B10010010,  //5

    B10000010,  //6

    B11111000,  //7    

    B10000000,  //8

    B10010000   //9     

};

void setup() {

  // put your setup code here, to run once:

 pinMode(sw1,INPUT);

 digitalWrite(sw1,HIGH);

 pinMode(sw2,INPUT);

 digitalWrite(sw2,HIGH);

 for(int i=0;i<8;i++)

 {

  pinMode(seg7[i],OUTPUT);

 }

}


void loop() {

  // put your main code here, to run repeatedly:

  val1=digitalRead(sw1);

  if(val1==LOW)

  {

    delay(20);

    while(digitalRead(sw1)==LOW);

    btnkey++;

    cnt++;

    if(cnt>9)

     cnt=0;

   }

   val2=digitalRead(sw2);

  if(val2==LOW)

  {

    delay(20);

    while(digitalRead(sw2)==LOW);

    btnkey++;

    cnt--;

    if(cnt<0)

     cnt=9;

   }

  num=cnt;

  

   for(j=0;j<8;j++)

  {

    if(bitRead(seg7Table[num%10],j))

     digitalWrite(seg7[j],LOW);

     else

     digitalWrite(seg7[j],HIGH);

  }  

}

btn 每按一次+1

 int val;

int num;

int cnt=0;

int btnkey=0;

int j;

int seg7[]={2,3,4,5,6,7,8,9};

int sw=14;

int seg7Table[]=

{

    B11000000,  //0

    B11111001,  //1

    B10100100,  //2

    B10110000,  //3

    B10011001,  //4

    B10010010,  //5

    B10000010,  //6

    B11111000,  //7    

    B10000000,  //8

    B10010000   //9     

};

void setup() {

  // put your setup code here, to run once:

 pinMode(sw,INPUT);

 digitalWrite(sw,HIGH);

 for(int i=0;i<8;i++)

 {

  pinMode(seg7[i],OUTPUT);

 }

}


void loop() {

  // put your main code here, to run repeatedly:

  val=digitalRead(sw);

  if(val==LOW)

  {

    delay(20);

    while(digitalRead(sw)==LOW);

    btnkey++;

    cnt++;

    if(cnt>9)

     cnt=0;

   }

  num=cnt;

  

   for(j=0;j<8;j++)

  {

    if(bitRead(seg7Table[num%10],j))

     digitalWrite(seg7[j],LOW);

     else

     digitalWrite(seg7[j],HIGH);

  }  

}

btn up/down

 int val;

int num;

int cnt=0;

int btnkey=0;

unsigned long time=0;

int j;

int seg7[]={2,3,4,5,6,7,8,9};

int sw=14;

int seg7Table[]=

{

    B11000000,  //0

    B11111001,  //1

    B10100100,  //2

    B10110000,  //3

    B10011001,  //4

    B10010010,  //5

    B10000010,  //6

    B11111000,  //7    

    B10000000,  //8

    B10010000   //9     

};

void setup() {

  // put your setup code here, to run once:

 pinMode(sw,INPUT);

 digitalWrite(sw,HIGH);

 for(int i=0;i<8;i++)

 {

  pinMode(seg7[i],OUTPUT);

 }

}


void loop() {

  // put your main code here, to run repeatedly:

  val=digitalRead(sw);

  if(val==LOW)

  {

    delay(20);

    while(digitalRead(sw)==LOW);

    btnkey++;

  }

  num=cnt;

   for(j=0;j<8;j++)

  {

    if(bitRead(seg7Table[num%10],j))

     digitalWrite(seg7[j],LOW);

     else

     digitalWrite(seg7[j],HIGH);

  }

  if(millis()-time>=1000)

  {

    time = millis();

    if(btnkey % 2 ==0)

  {

    cnt++;

    if(cnt>9)

     cnt=0;

  }

  else 

  {

    cnt--;

    if(cnt<0)

     cnt=9;

  }

 }

}

2021 0801 up切換

 int i;

int j;

int count=0;

int number;

int KeyData;

int numKeys=0;

const int debounceDelay=20;

unsigned long time=0;

const byte num[10]={

    B11000000,  //0

    B11111001,  //1

    B10100100,  //2

    B10110000,  //3

    B10011001,  //4

    B10010010,  //5

    B10000010,  //6

    B11111000,  //7    

    B10000000,  //8

    B10010000}; //9  

const byte show_year[4]=

{

    B10100100,  //2

    B11000000,  //0

    B10100100,  //2

    B11111001,  //1

};

const byte show_mon_day[4]=

{

    B11000000,  //0

    B10000000,  //8

    B11000000,  //0

    B11111001,  //1

};    

const int seg[]={2,3,4,5,6,7,8,9};  //abcdefgp

const int digit[]={10,11,12,13};    //D0-D3

const int sw=14;

void setup() 

  pinMode(sw,INPUT);

  digitalWrite(sw,HIGH);

  for(i=0;i<8;i++)

    pinMode(seg[i],OUTPUT);

  for(i=0;i<4;i++)

  {

    pinMode(digit[i],OUTPUT); 

    digitalWrite(digit[i],LOW);

  }     

}

void loop() 

{

  KeyData=digitalRead(sw);

  if(KeyData==LOW)

  {

    delay(debounceDelay);

    while(digitalRead(sw)==LOW)

      ;  

    numKeys++;

  }  

  number=count;

  for(i=3;i>=0;i--)

  {

      if(numKeys%3==0)

      {

        for(j=0;j<8;j++)

        {  

          if(bitRead(num[number%10],j))

            digitalWrite(seg[j],LOW);

          else

            digitalWrite(seg[j],HIGH);        

        }

      }

      else if(numKeys%3==1)

      {

        for(j=0;j<8;j++)

        {  

          if(bitRead(show_year[i],j))

            digitalWrite(seg[j],LOW);

          else

            digitalWrite(seg[j],HIGH);        

        }        

      }

      else if(numKeys%3==2)

      {

        for(j=0;j<8;j++)

        {  

          if(bitRead(show_mon_day[i],j))

            digitalWrite(seg[j],LOW);

          else

            digitalWrite(seg[j],HIGH);        

        }        

      }        

      digitalWrite(digit[i],HIGH);      

      delay(5);

      digitalWrite(digit[i],LOW);          

      number=number/10;

      if(millis()-time>=1000)

      {

        time=millis();

        if(numKeys%3==0)

        {

          count++;

          if(count>9999)

            count=0;

        }        

      }         

  }

}  

show 2021

 int i;

int j;

int count=0;

int number;

int KeyData;

int numKeys=0;

const int debounceDelay=20;

unsigned long time=0;

const byte num[10]={

    B11000000,  //0

    B11111001,  //1

    B10100100,  //2

    B10110000,  //3

    B10011001,  //4

    B10010010,  //5

    B10000010,  //6

    B11111000,  //7    

    B10000000,  //8

    B10010000}; //9  

const byte show_word[4]=

{

    B10100100,  //2

    B11000000,  //0

    B10100100,  //2

    B11111001,  //1

};  

const int seg[]={2,3,4,5,6,7,8,9};  //abcdefgp

const int digit[]={10,11,12,13};    //D0-D3

const int sw=14;

void setup() 

  pinMode(sw,INPUT);

  digitalWrite(sw,HIGH);

  for(i=0;i<8;i++)

    pinMode(seg[i],OUTPUT);

  for(i=0;i<4;i++)

  {

    pinMode(digit[i],OUTPUT); 

    digitalWrite(digit[i],LOW);

  }     

}

void loop() 

{

  KeyData=digitalRead(sw);

  if(KeyData==LOW)

  {

    delay(debounceDelay);

    while(digitalRead(sw)==LOW)

      ;  

    numKeys++;

  }  

  number=count;

  for(i=3;i>=0;i--)

  {

      if(numKeys%2==0)

      {

        for(j=0;j<8;j++)

        {  

          if(bitRead(num[number%10],j))

            digitalWrite(seg[j],LOW);

          else

            digitalWrite(seg[j],HIGH);        

        }

      }

      else

      {

        for(j=0;j<8;j++)

        {  

          if(bitRead(show_word[i],j))

            digitalWrite(seg[j],LOW);

          else

            digitalWrite(seg[j],HIGH);        

        }        

      }  

      digitalWrite(digit[i],HIGH);      

      delay(5);

      digitalWrite(digit[i],LOW);          

      number=number/10;

      if(millis()-time>=1000)

      {

        time=millis();

        if(numKeys%2==0)

        {

          count++;

          if(count>9999)

            count=0;

        }        

      }         

  }

btn up/help 共陰極

 int i;

int j;

int count=0;

int number;

int KeyData;

int numKeys=0;

const int debounceDelay=20;

unsigned long time=0;

const byte num[10]={

    B11000000,  //0

    B11111001,  //1

    B10100100,  //2

    B10110000,  //3

    B10011001,  //4

    B10010010,  //5

    B10000010,  //6

    B11111000,  //7    

    B10000000,  //8

    B10010000}; //9  

const byte help[4]={B10001001,B10000110,B11000111,B10001100};  

const int seg[]={2,3,4,5,6,7,8,9};  //abcdefgp

const int digit[]={10,11,12,13};    //D0-D3

const int sw=14;

void setup() 

  pinMode(sw,INPUT);

  digitalWrite(sw,HIGH);

  for(i=0;i<8;i++)

    pinMode(seg[i],OUTPUT);

  for(i=0;i<4;i++)

  {

    pinMode(digit[i],OUTPUT); 

    digitalWrite(digit[i],LOW);

  }     

}

void loop() 

{

  KeyData=digitalRead(sw);

  if(KeyData==LOW)

  {

    delay(debounceDelay);

    while(digitalRead(sw)==LOW)

      ;  

    numKeys++;

  }  

  number=count;

  for(i=3;i>=0;i--)

  {

      if(numKeys%2==0)

      {

        for(j=0;j<8;j++)

        {  

          if(bitRead(num[number%10],j))

            digitalWrite(seg[j],LOW);

          else

            digitalWrite(seg[j],HIGH);        

        }

      }

      else

      {

        for(j=0;j<8;j++)

        {  

          if(bitRead(help[i],j))

            digitalWrite(seg[j],LOW);

          else

            digitalWrite(seg[j],HIGH);        

        }        

      }  

      digitalWrite(digit[i],HIGH);      

      delay(5);

      digitalWrite(digit[i],LOW);          

      number=number/10;

      if(millis()-time>=1000)

      {

        time=millis();

        if(numKeys%2==0)

        {

          count++;

          if(count>9999)

            count=0;

        }        

      }         

  }

btn 四位數7seg up/down

 int btnkey;

int time;

int num;

int cnt=0;

int seg_7[]={2,3,4,5,6,7,8,9};//abcdefg

int com_sacn[]={10,11,12,13};//com3 com2 com1 com0

int sw=14;

int i;

int j;

int val;

int table_7seg[]=

{

    B11000000,  //0

    B11111001,  //1

    B10100100,  //2

    B10110000,  //3

    B10011001,  //4

    B10010010,  //5

    B10000010,  //6

    B11111000,  //7    

    B10000000,  //8

    B10010000   //9     

};

//------------------------------------------------------

void setup() {

  // put your setup code here, to run once:

 pinMode(sw,INPUT);

 digitalWrite(sw,HIGH);

 for(int i=0;i<8;i++)

 {

  pinMode(seg_7[i],OUTPUT);

 }

 for(i=0;i<4;i++)

 {

  pinMode(com_sacn[i],OUTPUT);

  digitalWrite(com_sacn[i],LOW);

 }

}

//--------------------------------------------------------

void loop() {

  // put your main code here, to run repeatedly:

val=digitalRead(sw);

if(val==LOW)

{

  delay(20);

  while(digitalRead(sw)==LOW);

  btnkey++;

}

 num=cnt;

 for(i=3;i>=0;i--)

 {

  for(j=0;j<8;j++)

  {

   if(bitRead(table_7seg[num%10],j))

   digitalWrite(seg_7[j],LOW);

   else

   digitalWrite(seg_7[j],HIGH);

  }

  digitalWrite(com_sacn[i],HIGH);delay(5);

  digitalWrite(com_sacn[i],LOW);

  num=num/10;

  if(millis()-time>1000)

  {

    time=millis();

    if(btnkey % 2==0)

    {

     cnt++;

     if(cnt>9999)

      cnt=0;  

    }

    else

    {

      cnt--;

      if(cnt<0)

       cnt=9999;

    }

  }

 }

}

btn + up/down

 int sw=10;

int pin7seg[]={2,3,4,5,6,7,8,9};

int val;

int cnt;

int num=-1;

int j;

int table7seg[]=

{

  B11000000,//0

  B11111001,//1

  B10100100,//2

  B10110000,//3

  B10011001,//4

  B10010010,//5

  B10000010,//6

  B11111000,//7

  B10000000,//8

  B10010000//9

};

void setup()

{

  // put your setup code here, to run once:

 pinMode(sw,INPUT_PULLUP);

 for(int i=0;i<8;i++)

 {

  pinMode(pin7seg[i],OUTPUT);

 }

}


void loop()

{

  // put your main code here, to run repeatedly:

 val=digitalRead(sw);

 if(val==LOW)

 {

  delay(20);

  while(digitalRead(sw)==LOW);

  cnt++;

 }

  if(cnt % 2==0)

  {

   num++;

   if(num>9) num=0;

  }

  else

  {

    num--;

    if(num<0)

    num=9;

  }

  for(j=0;j<8;j++)

  {

    if(bitRead(table7seg[num],j))

     digitalWrite(pin7seg[j],LOW);

     else

     digitalWrite(pin7seg[j],HIGH);

  }

  delay(1000);

 }

2021年7月8日 星期四

btn + 7seg顯示器

 int i;

int KeyData;

int numKeys=0;

int val=0;

const int debounceDelay=20;

const byte num[10]={

    ~B11000000,  //0

   ~ B11111001,  //1

   ~ B10100100,  //2

   ~ B10110000,  //3

   ~ B10011001,  //4

   ~ B10010010,  //5

   ~ B10000010,  //6

   ~ B11111000,  //7    

  ~  B10000000,  //8

  ~  B10010000   //9    

};

const int seg[]={2,3,4,5,6,7,8,9};  //abcdefgp

const int sw=10;

void setup() 

  pinMode(sw,INPUT_PULLUP);  

  for(i=0;i<8;i++)

    pinMode(seg[i],OUTPUT);  

}

void loop() 

{

  KeyData=digitalRead(sw);

  if(KeyData==LOW)

  {

    delay(debounceDelay);

    while(digitalRead(sw)==LOW)

      ;  

    numKeys++;

  }  

  if(numKeys%2==0)

  {

    val++;

    if(val>9)

     val=0;

  }

  else

  {

    val--;

    if(val<0)

      val=9;

  }  

  for(i=0;i<8;i++)

  {  

    if(bitRead(num[val],i))

      digitalWrite(seg[i],HIGH);

    else

      digitalWrite(seg[i],LOW);        

  }

  delay(1000);    

}  

7-seg display 0~9

 int i;

int j;

const byte num[10]={

    B11000000,  //0

    B11111001,  //1

    B10100100,  //2

    B10110000,  //3

    B10011001,  //4

    B10010010,  //5

    B10000010,  //6

    B11111000,  //7    

    B10000000,  //8

    B10010000   //9    

};

const int seg[]={2,3,4,5,6,7,8,9};  //abcdefgp

void setup() 

  for(i=0;i<8;i++)

    pinMode(seg[i],OUTPUT);

}

void loop() 

{

  for(i=0;i<10;i++)

  {

    for(j=0;j<8;j++)

    {  

      if(bitRead(num[i],j))

        digitalWrite(seg[j],HIGH);

      else

        digitalWrite(seg[j],LOW);        

    }

  delay(1000);    

  } 

p6-17 從Arduino板接收電腦訊息控制LED移動方向

 int i;

int key;

int temp;

int led[]={2,3,4,5,6,7,8,9};

int status[]={1,0,0,0,0,0,0,0};

void setup()

{

  Serial.begin(9600); 

  Serial.println("press R : LED shift right");

  Serial.println("press L : LED shift left");

  for(i=0;i<8;i++)

      pinMode(led[i],OUTPUT); 

}

void loop() 

{

  if (Serial.available()>0) 

     key = Serial.read(); 

  if(key=='R' || key=='r')

  {

    temp=status[7];

    for(i=7;i>=0;i--)

      status[i+1]=status[i];

    status[0]=temp;  

    display();

  }

  else if(key=='L' || key=='l')

  {

    temp=status[0];

    for(i=0;i<8;i++)

      status[i]=status[i+1];

    status[7]=temp;  

    display();

  }  

}

void display()

{

  for(int i=0;i<8;i++)

  {

    if(status[i]==1)

      digitalWrite(led[i],HIGH);

    else

      digitalWrite(led[i],LOW);       

  }

  delay(200);

2021年7月7日 星期三

p6-14 從Arduino板接收電腦訊息控制LED亮與暗實習

 int i;

int num;

int led[]={2,3,4,5,6,7,8,9};

int status[]={0,0,0,0,0,0,0,0};

void setup()

{

  Serial.begin(9600); 

  Serial.println("press 0~7 toggle LED status");

  for(i=0;i<8;i++)

      pinMode(led[i],OUTPUT);

  for(i=0;i<8;i++)

      digitalWrite(led[i],LOW);      

}

void loop() 

{

  if (Serial.available()>0) 

  {

      num = Serial.read();

      num=int(num-'0');

      if(num>=0 && num<=7)

      {

        status[num]=!status[num];

        digitalWrite(led[num],status[num]); 

        Serial.print("LED status : ");    

        for(i=0;i<8;i++)

        {

          if(status[i]==1)

            Serial.print("1");

          else

            Serial.print("0");

        }    

        Serial.println(); 

      }  

  }    

}

從Arduino板傳送LED狀態to電腦實習

 int led[]={2,3,4,5,6,7,8,9};

int i=0,j;

void setup() {

  // put your setup code here, to run once:

  Serial.begin(9600);

  for(i=0;i<8;i++)

  {

    pinMode(led[i],OUTPUT);

  }

}


void loop() {

  // put your main code here, to run repeatedly:

  Serial.print("LED = ");

  for(j=0;j<8;j++)

  {

    if(j==i) Serial.print("1");

    else  Serial.print("0");

  }

  Serial.println();

  digitalWrite(led[i],HIGH);delay(1000);

  digitalWrite(led[i],LOW);

  i++;

  if(i>7)

      i=0;

  }

button + left right led

int led[]={2,3,4,5,6,7,8,9};

int direct=0;

int sw=10;

int val=0;

int i;

int j=0;

void setup() 

{

 int i;

 pinMode(sw,INPUT_PULLUP);

 for(i=0;i<8;i++)

 {

  pinMode(led[i],OUTPUT);

 }

}


void loop() 

{

  val=digitalRead(sw);

  if(val==LOW)

  {

    delay(20);

    while(digitalRead(sw)==LOW);

    direct=!direct;

  }

  for(i=0;i<8;i++)

  {

    digitalWrite(led[i],LOW);

  }

  if(direct==LOW)

  {

    digitalWrite(led[j],HIGH);delay(500);

   j++;

    if(j==8)你還要加1才會跳進來才歸0

     j=0;

  }

  else 

  {

    digitalWrite(led[j],HIGH);delay(500);

     j--;

    if(j==-1)//你還要減1才會跳進來才歸7

     j=7;

  }

}

button + pili led

 const int sw=10;

const int led[]={2,3,4,5,6,7,8,9};

const int debounceDelay=20;

int val;

int i;

int j=7;

int direct=0;

void setup() { 

  pinMode(sw,INPUT_PULLUP);  

  for(i=0;i<8;i++)

  {

    pinMode(led[i],OUTPUT);

  }  

}

void loop() {

  val=digitalRead(sw);

  if(val==LOW)

  {

    delay(debounceDelay);

    while(digitalRead(sw)==LOW)

      ;  

    direct=!direct;                 

  } 

  for(i=0;i<8;i++)

  {

    digitalWrite(led[i],LOW);

  }  

  if(direct==0)

  {

    digitalWrite(led[j],HIGH);

    delay(500);

     j=j+1;

    if(j==8)

      j=0;   

  }

  else

  {

    digitalWrite(led[j],HIGH);

    delay(500);

    j=j-1; 

    if(j==0)

      j=7; 

  }     

}

2021年7月6日 星期二

消除彈跳debounceDelay

 int led = 10;

int sw1 = 3;

int value=0;

int ledState=LOW;

int debounceDelay=20;

void setup()

{

  // put your setup code here, to run once:

  pinMode(led,OUTPUT);

  pinMode(sw1,INPUT_PULLUP);

}


void loop() {

  // put your main code here, to run repeatedly:

value=digitalRead(sw1);

if(value==0)

{

  delay(debounceDelay);

  while(digitalRead(sw1)==LOW)

   ;

  ledState=!ledState;

  digitalWrite(led,ledState);

}

}

dip sw控制led左右移動

 int led[]={2,3,4,5,6,7,8,9};

int i=0;

int j=0;

int value;

int sw =10;

void setup()

{

 int i;

 for(i=0;i<8;i++)

 {

  pinMode(led[i],OUTPUT);

 }

}

void loop()

{

  value=digitalRead(sw);

  if(value==1)

  {

    for(i=0;i<8;i++)

    {

      if(i>7)

        i=0;

      digitalWrite(led[i],HIGH);delay(200);

      digitalWrite(led[i],LOW);

    }

  }

  else if(value==0)

  {

    for(i=7;i>=0;i--)

    {

      if(i<0)

        i=7;

      digitalWrite(led[i],HIGH);delay(200);

      digitalWrite(led[i],LOW);

    }

  }

}

用內建電阻控制LED

 int sw=10;

int led=2;

int value=0;

void setup() {

  // put your setup code here, to run once:

 pinMode(sw,INPUT_PULLUP);

 pinMode(led,OUTPUT);

}


void loop() {

  // put your main code here, to run repeatedly:

value=digitalRead(sw);

if(value==1)

{

  digitalWrite(led,LOW);delay(200);

}

else

{

  digitalWrite(led,HIGH);

}

}

2021年7月5日 星期一

6個pwm led

 int led[]={3,5,6,9,10,11};

int i=0;

int j=0;

int flag=1;

void setup() 

{

  int i;//此行如果忘了加,會亮的很奇怪, 因為local var會跟gobal var共用

  for(i=0;i<6;i++)

  {

    pinMode(led[i],OUTPUT);

  }

}


void loop()

{

 while(1)

 {

  if(flag==1)

  {

    i=i+5;

    if(i>250)//調250才不會停頓一下

      flag=0;

    analogWrite(led[j],i);delay(20);

  }

  else

  {

    i=i-5;

    analogWrite(led[j],i);delay(20);

    if(i<=0)

    {

      flag=1;

      j++;

      if(j==6)

       j=0;

    }

  }

 }

}


6個pwm led

 int led[] ={3,5,6,9,10,11};      //共有6個pwm 的led     

int i=0; 

int j=0;

int way=0;//往上亮或是往下暗,用boolean也可以

//-------------------------------------------------------------------------

void setup()  

{

  int i;

  for(i=0;i<=5;i++)//先設定pwm pin腳位為輸出模式

  {

     pinMode(led[i],OUTPUT); 

  }

//------------------------------------------------------------------------------

void loop()  

  while(1)

  {  

   if(way==0)//way=0代表慢慢亮,每次加數字5的亮度,超過255就改flag=1

    {

      i=i+5;

      if(i>=255)

        way=1;   

      analogWrite(led[j],i);  //led腳位變數用j, 亮度漸亮用i,不要conflict, 且類比寫出腳位(因為我們j為gobal var,所以memory var會跟著change

      delay(10); //要delay否則看不出亮度的變化

    }  

    else//否則   0跑到255 一定會跑到else 255跑到0

    {  

      i=i-5;//每次亮度減5即(慢慢變暗暗)

      analogWrite(led[j],i);  

      delay(10); 

       if(i<=0)//如果亮度變數小於0,方向又變為0往上亮

       {//此處要大括號整個包含,因為亮到暗是一個週期

        analogWrite(led[j],0);//此行可以不用寫

        way=0;        

        j=j+1;//led腳位共有6pin腳位,超過6就又歸0

        if(j>5)

         j=0; 

      }      

    } 

  }  

}

呼'吸led

 int led = 3;

int i;//i代表高度

void setup()

{

 pinMode(led,OUTPUT);

}


void loop()

{

  for(i=0;i<255;i+=5)//我每次增加亮度是5,然後再delay個20ms,因為cpu exe速度太快了

  {

    analogWrite(led,i);delay(20);

  }

  for(i=255;i>=0;i-=5)//接著led慢慢滅

  {

    analogWrite(led,i);delay(20);

  }

}

來回pili led

 int led[]={2,3,4,5,6,7,8,9};

void setup() 

{

  int i;

  for(i=0;i<8;i++)

  {

    pinMode(led[i],OUTPUT);

  }

}


void loop() 

{

  int i;

  for(i=0;i<8;i++)

  {

    digitalWrite(led[i],HIGH);delay(1000);//燈亮1秒就關閉

    digitalWrite(led[i],LOW);

  }

   for(i=6;i>0;i--)//這裡要從6(因為我們從0開始數,)燈即是倒數第二個燈

//0 1 2 3 4 5 6 7  從6才不會有多停留在最後一個燈

  {

    digitalWrite(led[i],HIGH);delay(1000);

    digitalWrite(led[i],LOW);

  } 

}

6個led(pwm)

 const int led[] ={3,5,6,9,10,11};           

int brightness=0; 

int lighten=5;

int ledNums=0;

int direct=0;

void setup()  

void loop()  

  while(1)

  {  

   if(direct==0)

    {

      brightness=brightness+lighten;

      if(brightness>=250)

        direct=1;   

    analogWrite(led[ledNums],brightness);  

    delay(10); 

    }  

    else

    {  

      brightness=brightness-lighten;

          analogWrite(led[ledNums],brightness);  

    delay(10); 

      if(brightness<=5)

      {

        analogWrite(led[ledNums],0);

        direct=0;        

        ledNums=ledNums+1;

        if(ledNums>5)

         ledNums=0; 

      }      

    }

    

  }  

}

從Arduino板傳送LED狀態到電腦實習電路圖

 int led[]={2,3,4,5,6,7,8,9};

int i=0,j;

void setup() 

{

  Serial.begin(9600);

  for( i=0;i<9;i++)

  {

    pinMode(led[i],OUTPUT);

  }

}

void loop()

{

  Serial.print("LED=");

  for(j=0;j<8;j++)

  {

    if(j==i)  

      Serial.print("1");

    else 

      Serial.print("0");

  }

  Serial.println();

  digitalWrite(led[i],HIGH);

  delay(1000);

  digitalWrite(led[i],LOW);

  i++;

  if(i>8)

   i=0;

}


從Arduino板傳送訊息到電腦

 byte val=65;

void setup()

{

  // put your setup code here, to run once:

  Serial.begin(9600);

    for(int i=0;i<26;i++)

  {

    Serial.write(val+i);

    Serial.println(val+i);

    delay(1000);

  }

}

void loop()

{


}

https://www.arduino.cc/en/Tutorial/BuiltInExamples/SwitchCase2

 

Code


/*

  Switch statement with serial input

  Demonstrates the use of a switch statement. The switch statement allows you

  to choose from among a set of discrete values of a variable. It's like a

  series of if statements.

  To see this sketch in action, open the Serial monitor and send any character.

  The characters a, b, c, d, and e, will turn on LEDs. Any other character will

  turn the LEDs off.

  The circuit:

  - five LEDs attached to digital pins 2 through 6 through 220 ohm resistors

  created 1 Jul 2009

  by Tom Igoe

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/SwitchCase2

*/

void setup() {

  // initialize serial communication:

  Serial.begin(9600);

  // initialize the LED pins:

  for (int thisPin = 2; thisPin < 7; thisPin++) {

    pinMode(thisPin, OUTPUT);

  }
}

void loop() {

  // read the sensor:

  if (Serial.available() > 0) {

    int inByte = Serial.read();

    // do something different depending on the character received.

    // The switch statement expects single number values for each case; in this

    // example, though, you're using single quotes to tell the controller to get

    // the ASCII value for the character. For example 'a' = 97, 'b' = 98,

    // and so forth:

    switch (inByte) {

      case 'a':

        digitalWrite(2, HIGH);

        break;

      case 'b':

        digitalWrite(3, HIGH);

        break;

      case 'c':

        digitalWrite(4, HIGH);

        break;

      case 'd':

        digitalWrite(5, HIGH);

        break;

      case 'e':

        digitalWrite(6, HIGH);

        break;

      default:

        // turn all the LEDs off:

        for (int thisPin = 2; thisPin < 7; thisPin++) {

          digitalWrite(thisPin, LOW);

        }

    }

  }
}

algorithm

 #include <iostream> #include <string.h> using namespace std; int main(int argc, char** argv)  { for(int j=2;j<=100;j++)//j...