2019年6月7日 星期五

按鈕+debounce






































byte ledPin1 = 2 ;
byte ledPin2 = 3;
byte btnPin = 4 ;
int k=-1;
//boolean state = 0;//一開始沒有人按
boolean buttonUp = 1;//按鈕放開過了

void setup()
{
  pinMode(ledPin1, OUTPUT);
  digitalWrite(ledPin1, 0);
  pinMode(ledPin2, OUTPUT);
  digitalWrite(ledPin2, 0);
  pinMode(btnPin, INPUT);
  digitalWrite(btnPin, HIGH);
  Serial.begin(9600);
}
void loop()
{
//有人按了這顆按鈕 且 按鈕曾經被放開過即切換LED狀態
  if(digitalRead(btnPin) == 0 && buttonUp == 1)
  {
    buttonUp = 0;
    k=k+1;
    if(k==2)k=0;
    if(k==0)
    {
      digitalWrite(ledPin1, 1);
      digitalWrite(ledPin2, 0);
    }
    if(k==1)
    {
       digitalWrite(ledPin1, 0);
       digitalWrite(ledPin2, 1);
    }
    Serial.println(k);
  }
//有人按了這顆按鈕 且 按鈕被放開過
  else if(digitalRead(btnPin) == HIGH && buttonUp == 0)
  {
    buttonUp = 1;
  }
  delay(10); // Delay 時間可視情況調整(開關抖動)
}


byte ledPin[] = { 9, 8, 7, 6, 5, 4,3,2};
int ad1[] = {0x81,0x42,0x24,0x18,0x24,0x42,0x81,0x00 };
int ad2[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};
int ad3[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00};
byte btnPin = 10 ;
int k=-1;
int delaytime = 1000;   // 延遲時間預設為 100 ms
int i,j;            // for迴圈的計數變數
boolean buttonUp = 1;//按鈕放開過了
void setup()
{
  for (i=0; i<8; i++)
  {
    pinMode(ledPin[i], OUTPUT);
    digitalWrite(ledPin[i], LOW);
  }
  pinMode(btnPin, INPUT);
  digitalWrite(btnPin, HIGH);
  Serial.begin(9600);
}
void OutPort(byte dat)
{
  for (j=7; j>=0; j--)
  {
    if (dat % 2==1)    // 除 2 的餘數代表要取出 dat 的最低位元狀態
      digitalWrite(ledPin[j], HIGH);  // LED off
    else
      digitalWrite(ledPin[j], LOW);   // LED on
    dat=dat >> 1;      // dat 右移一個位元, 繼續偵測其它位元狀態
  }
}
void loop()
{
//有人按了這顆按鈕 且 按鈕曾經被放開過即切換LED狀態
  if(digitalRead(btnPin) == 0 && buttonUp == 1)
  {
    buttonUp = 0;
    k=k+1;
    if(k>2)k=0;
    Serial.println(k);
    if(k==0)
    {
      for (i=0; i<8; i++)
      {
        OutPort(ad1[i]);
        delay(delaytime);               // wait for a second
      }
    }
    if(k==1)
    {
      for (i=0; i<9; i++)
      {
        OutPort(ad2[i]);
        delay(delaytime);               // wait for a second
      }
    }
    if(k==2)
    {
      for (i=0; i<9; i++)
      {  OutPort(ad3[i]);
         delay(delaytime);               // wait for a second
      }
    }
  }
//有人按了這顆按鈕 且 按鈕被放開過
  else if(digitalRead(btnPin) == 1 && buttonUp == 0)
  {
    buttonUp = 1;
  }
  delay(10); // Delay 時間可視情況調整(開關抖動)
}

2019年6月5日 星期三

資料型態問題

for控制變數用int,做上下,compiler用整數
例如:for(i=-8;i>-100;i--)都可以做,i不一定用正的,int是正負整數都可以。
btye:0~255只有正,而沒有負

矩陣:smd pullup提昇電阻,要有用9個pin另一個pin是hi
內部比外部要好,共用電源沒有問題

2019年6月3日 星期一

呼吸燈






















序列埠監控視窗






















































PWM











































































boolean pushBtn1;
boolean pushBtn2;
#define ledPin 9
int brightness =128;
int delaytime=1000;
void setup()
{
  // put your setup code here, to run once:
 pinMode(2,INPUT_PULLUP);
 pinMode(3,INPUT_PULLUP);
 pinMode(ledPin,OUTPUT);
 Serial.begin(9600);
}

void loop()
{
  // put your main code here, to run repeatedly:
  pushBtn1=digitalRead(2);
  pushBtn2=digitalRead(3);
  if(!pushBtn1 && brightness >0)
  {
    brightness=brightness-5;
  }
  else if(!pushBtn1 && brightness <255)
  {
    brightness=brightness+5;
  }
  analogWrite(ledPin,brightness);
  Serial.println(brightness);
  delay(1000);
}













Python 簡介、安裝、與快速開始

1. Python 的簡單介紹。 2. 如何安裝 Python,實務操作。 3. 選擇文字編輯器,實務操作 Visual Studio Code。 4. 撰寫、並且執行第一個 Python 程式。
# 資料︰程式的基本單位 # 數字 3456 # 整數 3.5 # 浮點數(小數) # 字串 "測試中文" "Hello World" # 布林值 True False # 有順序、可動的列表 List [3,4,5] ["Hello","World"] # 有順序、不可動的列表 Tuple (3,4,5) ("Hello","World") # 集合 Set {3,4,5} {"Hello World"} # 字典 Dictionary {"apple":"蘋果","data":"資料"} # 變數︰用來儲存資料的自訂名稱 # 變數名稱=資料 x=3 # print(資料) print(x) x=True # 取代舊的資料 print(x) x="Hello" print(x) x={3,5,6} # 集合 Set print(x)

algorithm

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