2019年6月10日 星期一

fan


#define IN1 6       // 宣告馬達控制信號輸入端1
#define IN2 7       // 宣告馬達控制信號輸入端2
void setup()
{
   pinMode(IN1, OUTPUT);     // 設定馬達控制腳1為輸出
   pinMode(IN2, OUTPUT);     // 設定馬達控制腳2為輸出
}
void loop()
 {
   digitalWrite(IN1,HIGH);     // 風扇正轉( 送風)
   digitalWrite(IN2,LOW);
   delay(5000);
   digitalWrite(IN1,HIGH);     // 風扇煞車
   digitalWrite(IN2,HIGH);
   delay(3000);
   digitalWrite(IN1,LOW);     // 風扇反轉( 吸風)
   digitalWrite(IN2,HIGH);
   delay(5000);
   digitalWrite(IN1,LOW);     // 風扇停止
   digitalWrite(IN2,LOW);
   delay(3000);
}

buzzer無源蜂鳴器























































int sp=2;
int i,j;
int notes[]={262,294,329,349,392,440,493,523};
int delaytime1=300;
int delaytime2=50;
void setup()
{
  for(i=0;i<8;i++)
  {
    tone(sp,notes[i],300);
    delay(delaytime1);
    noTone(sp);
    delay(delaytime2);
  }
}
void loop()
{
}

Power Jack


RELAY繼電器

const int relayPin=13; // 繼電器(Relay)
const int IN1=12; //IN1 輸入
int relayState=0; // 繼電器狀態
void setup() 
{
  Serial.begin(9600); // 開啟Serialport, 通訊速率為9600bps
  pinMode(relayPin,OUTPUT); // 把relayPin 設置成OUTPUT
}
void loop()
{
  Serial.println(“FAN is on”); // 風扇啟動
  digitalWrite(relayPin,HIGH);
  digitalWrite(IN1,HIGH);
  delay(5000);
  Serial.println(“FAN is off”); // 風扇停止
  digitalWrite(relayPin,LOW);
 digitalWrite(IN1,LOW);
  delay(5000);
}





2019年6月9日 星期日

TCRT 5000

int ledPin=8;
int inPin=2;
int val=0;
void setup()
{
 pinMode(ledPin,OUTPUT);
 pinMode(inPin,INPUT);
}
void loop()
{ 
 val=digitalRead(inPin);
 if(val==HIGH)
 {
  digitalWrite(ledPin,HIGH);
 } 
 else 
 {
  digitalWrite(ledPin,LOW); 
 }
}

2019年6月8日 星期六

紅外線接收器

#include <IRremote.h>
int RECV_PIN = 7;
byte led2Pin = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
  Serial.begin(9600);
  Serial.println("Enabling IRin");
  irrecv.enableIRIn(); // Start the receiver
  Serial.println("Enabled IRin");
  pinMode(led2Pin,OUTPUT);
  digitalWrite(led2Pin,LOW);
}

void loop()
{
  if (irrecv.decode(&results))
  {
    if(results.value==0XFF30CF)
    {
      digitalWrite(led2Pin,!digitalRead(led2Pin));
    }
    Serial.println(results.value,HEX);
    irrecv.resume(); // Receive the next value
  }
  delay(100);
}
touch不良,開發板最好用公的 ,因為母的用久會鬆掉


七段顯示器








































例:按一下加1
byte seg7Pin[]={2,3,4,5,6,7,8};
byte seg7Table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
byte btnPin = 9 ;
int i,j;
int k=-1;
//boolean state = 0;//一開始沒有人按
boolean buttonUp = 1;//按鈕放開過了

void setup()
{
  for(i=0;i<7;i++)
  {
   pinMode(seg7Pin[i],OUTPUT);
   digitalWrite(seg7Pin[i],LOW);
  }
  pinMode(btnPin, INPUT);
  digitalWrite(btnPin, HIGH);
  Serial.begin(9600);
}
void outPort(byte data)
{
  for(j=0;j<7;j++)
  {
    if(data % 2 == 1)digitalWrite(seg7Pin[j],HIGH);
    else
    {
      digitalWrite(seg7Pin[j],LOW);
    }
    data=data/2;
  }
}
void loop()
{
//有人按了這顆按鈕 且 按鈕曾經被放開過即切換LED狀態
  if(digitalRead(btnPin) == 0 && buttonUp == 1)
  {
    buttonUp = 0;
    k=k+1;
    if(k==10)k=0;
    Serial.println(k);
    outPort(~seg7Table[k]);
  }
//有人按了這顆按鈕 且 按鈕被放開過
  else if(digitalRead(btnPin) == HIGH && buttonUp == 0)
  {
    buttonUp = 1;
  }
  delay(10); // Delay 時間可視情況調整(開關抖動)
}


例:兩個開關加減1
byte seg7Pin[]={2,3,4,5,6,7,8};
byte seg7Table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
byte btnPin1 = 9 ;
byte btnPin2 = 10 ;
int i,j;
int k=-1;
//boolean state = 0;//一開始沒有人按
boolean buttonUp1 = 1;//按鈕放開過了
boolean buttonUp2 = 1;//按鈕放開過了
void setup()
{
  for(i=0;i<7;i++)
  {
   pinMode(seg7Pin[i],OUTPUT);
   digitalWrite(seg7Pin[i],LOW);
  }
  pinMode(btnPin1, INPUT);
  pinMode(btnPin2, INPUT);
  digitalWrite(btnPin1, HIGH);
  digitalWrite(btnPin2, HIGH);
  Serial.begin(9600);
}
void outPort(byte data)
{
  for(j=0;j<7;j++)
  {
    if(data % 2 == 1)digitalWrite(seg7Pin[j],HIGH);
    else
    {
      digitalWrite(seg7Pin[j],LOW);
    }
    data=data/2;
  }
}
void loop()
{
//有人按了這顆按鈕 且 按鈕曾經被放開過即切換LED狀態
  if(digitalRead(btnPin1) == 0 && buttonUp1 == 1)
  {
    buttonUp1 = 0;
    k=k+1;
    if(k==10)k=0;
    Serial.println(k);
    outPort(~seg7Table[k]);
  }
//有人按了這顆按鈕 且 按鈕被放開過
  else if(digitalRead(btnPin1) == HIGH && buttonUp1 == 0)
  {
    buttonUp1 = 1;
  }
  if(digitalRead(btnPin2) == 0 && buttonUp2 == 1)
  {
    buttonUp2 = 0;
    k=k-1;
    if(k<0)k=9;
    Serial.println(k);
    outPort(~seg7Table[k]);
  }
//有人按了這顆按鈕 且 按鈕被放開過
  else if(digitalRead(btnPin2) == HIGH && buttonUp2 == 0)
  {
    buttonUp2 = 1;
  }
  delay(10); // Delay 時間可視情況調整(開關抖動)
}

algorithm

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