wiki:wade/embedded/arduino/example/temp

Version 22 (modified by wade, 11 years ago) (diff)

--

相關資料

  • arduino sparkfun

程式一:LED 矩陣測試程式

#define start_pin 2
#define end_pin 18
#define low_start_pin 10
#define low_end_pin 17
#define high_start_pin 2
#define high_end_pin 9
#define led_delay_time 150
#define button 2

boolean flag;

void setup()
{
  for (int i=start_pin; i<=end_pin; i++)
  {
    pinMode(i, OUTPUT);
  }
//  pinMode(button, INPUT);
//  digitalWrite(button, HIGH);
//  attachInterrupt(0, button_event, LOW);
  Serial.begin(9600);
  clean();
}

void loop()
{
  clean();
  delay(led_delay_time);
  for (int i=high_start_pin; i<=high_end_pin; i++)
  {
    Serial.print("[");
    Serial.print(i);
    Serial.println("]  ");
    digitalWrite(i, HIGH);
    for (int j=low_start_pin; j<=low_end_pin; j++)
    {
      Serial.print("  ");
      Serial.print(j);
      digitalWrite(j, LOW);
      delay(led_delay_time);
      digitalWrite(j, HIGH);
    }
    Serial.println();
    digitalWrite(i, LOW);
  }
}

void clean()
{
  Serial.println("clean");
  for (int i=low_start_pin; i<=low_end_pin; i++)
    digitalWrite(i, HIGH);
  for (int i=high_start_pin; i<=high_end_pin; i++)
    digitalWrite(i, LOW);
}

void button_event()
{
  delay(500);
  flag = !flag;
  while(flag)
  {
  }
}

程式二:產生「王」字

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */

void setup() {
  // Set Vcc Pin
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);  
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);  
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  
  // Set GND Pin
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  pinMode(14, OUTPUT);
  pinMode(15, OUTPUT);
  pinMode(16, OUTPUT);
  pinMode(17, OUTPUT);
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  digitalWrite(13, HIGH);
  digitalWrite(14, HIGH);
  digitalWrite(15, HIGH);
  digitalWrite(16, HIGH);
  digitalWrite(17, HIGH);
}

void loop() {
  
  // time 1
  digitalWrite(2, HIGH);   // HIGH
//  digitalWrite(3, HIGH);   // HIGH
//  digitalWrite(4, HIGH);   // HIGH
//  digitalWrite(5, HIGH);   // HIGH
//  digitalWrite(6, HIGH);   // HIGH
//  digitalWrite(7, HIGH);   // HIGH
//  digitalWrite(8, HIGH);   // HIGH
//  digitalWrite(9, HIGH);   // HIGH
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  digitalWrite(14, LOW);
  digitalWrite(15, LOW);
  digitalWrite(16, LOW);
  digitalWrite(17, LOW);
//  delay(300);
  clean();
  
    
  // time 2
//  digitalWrite(2, HIGH);   // HIGH
  digitalWrite(3, HIGH);   // HIGH
//  digitalWrite(4, HIGH);   // HIGH
//  digitalWrite(5, HIGH);   // HIGH
//  digitalWrite(6, HIGH);   // HIGH
//  digitalWrite(7, HIGH);   // HIGH
//  digitalWrite(8, HIGH);   // HIGH
//  digitalWrite(9, HIGH);   // HIGH
//  digitalWrite(10, LOW);
//  digitalWrite(11, LOW);
//  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
//  digitalWrite(14, LOW);
//  digitalWrite(15, LOW);
//  digitalWrite(16, LOW);
//  digitalWrite(17, LOW);
//  delay(300);
  clean();


  // time 3
//  digitalWrite(2, HIGH);   // HIGH
//  digitalWrite(3, HIGH);   // HIGH
  digitalWrite(4, HIGH);   // HIGH
//  digitalWrite(5, HIGH);   // HIGH
//  digitalWrite(6, HIGH);   // HIGH
//  digitalWrite(7, HIGH);   // HIGH
//  digitalWrite(8, HIGH);   // HIGH
//  digitalWrite(9, HIGH);   // HIGH
//  digitalWrite(10, LOW);
//  digitalWrite(11, LOW);
//  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
//  digitalWrite(14, LOW);
//  digitalWrite(15, LOW);
//  digitalWrite(16, LOW);
//  digitalWrite(17, LOW);
//  delay(300);
  clean();

  // time 4
//  digitalWrite(2, HIGH);   // HIGH
//  digitalWrite(3, HIGH);   // HIGH
//  digitalWrite(4, HIGH);   // HIGH
  digitalWrite(5, HIGH);   // HIGH
//  digitalWrite(6, HIGH);   // HIGH
//  digitalWrite(7, HIGH);   // HIGH
//  digitalWrite(8, HIGH);   // HIGH
//  digitalWrite(10, LOW);
//  digitalWrite(11, LOW);
//  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
//  digitalWrite(14, LOW);
//  digitalWrite(15, LOW);
//  digitalWrite(16, LOW);
//  digitalWrite(17, LOW);
//  delay(300);
  clean();

  // time 5
//  digitalWrite(2, HIGH);   // HIGH
//  digitalWrite(3, HIGH);   // HIGH
//  digitalWrite(4, HIGH);   // HIGH
//  digitalWrite(5, HIGH);   // HIGH
  digitalWrite(6, HIGH);   // HIGH
//  digitalWrite(7, HIGH);   // HIGH
//  digitalWrite(8, HIGH);   // HIGH
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  digitalWrite(14, LOW);
  digitalWrite(15, LOW);
  digitalWrite(16, LOW);
  digitalWrite(17, LOW);
  clean();

  // time 6
//  digitalWrite(2, HIGH);   // HIGH
//  digitalWrite(3, HIGH);   // HIGH
//  digitalWrite(4, HIGH);   // HIGH
//  digitalWrite(5, HIGH);   // HIGH
//  digitalWrite(6, HIGH);   // HIGH
  digitalWrite(7, HIGH);   // HIGH
//  digitalWrite(8, HIGH);   // HIGH
//  digitalWrite(10, LOW);
//  digitalWrite(11, LOW);
//  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
//  digitalWrite(14, LOW);
//  digitalWrite(15, LOW);
//  digitalWrite(16, LOW);
//  digitalWrite(17, LOW);
//  delay(300);
  clean();
//  
//  // time 7
//  digitalWrite(2, HIGH);   // HIGH
//  digitalWrite(3, HIGH);   // HIGH
//  digitalWrite(4, HIGH);   // HIGH
//  digitalWrite(5, HIGH);   // HIGH
//  digitalWrite(6, HIGH);   // HIGH
//  digitalWrite(7, HIGH);   // HIGH
  digitalWrite(8, HIGH);   // HIGH
//    digitalWrite(9, HIGH);   // HIGH
//  digitalWrite(10, LOW);
//  digitalWrite(11, LOW);
//  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
//  digitalWrite(14, LOW);
//  digitalWrite(15, LOW);
//  digitalWrite(16, LOW);
//  digitalWrite(17, LOW);
//  delay(300);
  clean();
//  

  // time 8
//  digitalWrite(2, HIGH);   // HIGH
//  digitalWrite(3, HIGH);   // HIGH
//  digitalWrite(4, HIGH);   // HIGH
//  digitalWrite(5, HIGH);   // HIGH
//  digitalWrite(6, HIGH);   // HIGH
//  digitalWrite(7, HIGH);   // HIGH
//  digitalWrite(8, HIGH);   // HIGH
  digitalWrite(9, HIGH);   // HIGH
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  digitalWrite(14, LOW);
  digitalWrite(15, LOW);
  digitalWrite(16, LOW);
  digitalWrite(17, LOW);
  clean();
}

void clean()
{
  delay(300);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  digitalWrite(13, HIGH);
  digitalWrite(14, HIGH);
  digitalWrite(15, HIGH);
  digitalWrite(16, HIGH);
  digitalWrite(17, HIGH);
}

程式三 UART 轉 RS232

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  for (int i=0; i<=100; i++)
  {
    Serial.println(i);
    delay(200);
  }
}

程式四:由 PC 傳送資料至 Arduino

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  if(Serial.available())
  {
//    Serial.println(Serial.read());
    int val = Serial.read();
    if (val == XX)
    {
    }
    delay(300);
  }
}

程式五:點亮左上至右下的LED

#define start_pin 2
#define end_pin 18
#define low_start_pin 10
#define low_end_pin 17
#define high_start_pin 2
#define high_end_pin 9
#define led_delay_time 150
#define button 2
int delay_time= 0;

void setup()
{
  for (int i=start_pin; i<=end_pin; i++)
  {
    pinMode(i, OUTPUT);
  }
  clean();
}

void loop()
{
  // time 1
  digitalWrite(2, HIGH);
  digitalWrite(10, LOW);
  delay(delay_time);
  clean();
  delay(delay_time);
  
   // time 2
  digitalWrite(3, HIGH);
  digitalWrite(11, LOW);
  delay(delay_time);
  clean();
  delay(delay_time);
  
   // time 3
  digitalWrite(4, HIGH);
  digitalWrite(12, LOW);
  delay(delay_time);
  clean();
  delay(delay_time);
  
   // time 4
  digitalWrite(5, HIGH);
  digitalWrite(13, LOW);
  delay(delay_time);
  clean();
  delay(delay_time);
  
   // time 5
  digitalWrite(6, HIGH);
  digitalWrite(14, LOW);
  delay(delay_time);
  clean();
  delay(delay_time);
  
   // time 6
  digitalWrite(7, HIGH);
  digitalWrite(15, LOW);
  delay(delay_time);
  clean();
  delay(delay_time);
  
   // time 7
  digitalWrite(8, HIGH);
  digitalWrite(16, LOW);
  delay(delay_time);
  clean();
  delay(delay_time);
  
   // time 8
  digitalWrite(9, HIGH);
  digitalWrite(17, LOW);
  delay(delay_time);
  clean();
  delay(delay_time);
}

void clean()
{
  Serial.println("clean");
  for (int i=low_start_pin; i<=low_end_pin; i++)
    digitalWrite(i, HIGH);
  for (int i=high_start_pin; i<=high_end_pin; i++)
    digitalWrite(i, LOW);
}

程式六:七段顯示器

void setup()
{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  clean();
}

void loop()
{
  all();
  delay(500);
  clean();
  delay(500);
}

void all()
{
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
}

void clean()
{
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
}

程式七:led 霹靂車

void setup() {
  for (int i=0; i<=7; i++)
  {
    pinMode(i, OUTPUT);
    digitalWrite(i, LOW);
  }
  

}

void loop() 
{
  for (int i=0; i<=7; i++)
  {
    digitalWrite(i, HIGH);
  }

}

程式八:基本序列傳輸

void setup() {
  pinMode(2, INPUT);
  digitalWrite(2, HIGH);
  Serial.begin(9600);

}

void loop() {
  // put your main code here, to run repeatedly: 
  int input1 = digitalRead(2);
  Serial.println(input1);
  delay(300);
}

程式九:類比輸入

void setup() {
  Serial.begin(9600);

}

void loop() {
  // put your main code here, to run repeatedly: 
  int val = analogRead(0) ;
  Serial.println(val);
  
}

程式十:按鍵輸入

int led = 13;

int lighttpye = 0;
int switchbutton=1;

void setup() { 
  pinMode(2, INPUT);
  digitalWrite(2, HIGH);
  Serial.begin(9600);
  pinMode(led, OUTPUT); 
}
void loop() {

int input1 = digitalRead(2);
Serial.println(input1);
delay(300);

if(switchbutton!=input1){
  if(input1!=0){
    if(lighttpye!=0){
      digitalWrite(led, HIGH); 
      lighttpye=0;
    }else{
      digitalWrite(led, LOW); 
    lighttpye=1;
  }}

switchbutton=input1;

}
}

Attachments (5)