#include "reg51.h"
main()
{
void delay(int);
int i,j;
char seg[10]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
while(1)
{
for(i=0;i<100;i++)
{
for(j=0;j<50;j++)
{
P2=0x0d;
P1=seg[i/10];
delay(200);
P2=0x0e;
P1=seg[i%10];
delay(200);
}
}
}
}
void delay(int count)
{
int i;
for(i=1;i<=count;i++)
;
}
例:99-0
#include "reg51.h"
main()
{
void delay(int);
int i,j;
char seg[10]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
while(1)
{
for(i=99;i>=0;i--)
{
for(j=0;j<50;j++)
{
P2=0x0d;
P1=seg[i/10];
delay(200);
P2=0x0e;
P1=seg[i%10];
delay(200);
}
}
}
}
void delay(int count)
{
int i;
for(i=1;i<=count;i++)
;
}
例:00-59
#include "reg51.h"
main()
{
void delay(int);
int i,j;
char seg[10]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
while(1)
{
for(i=0;i<60;i++)
{
for(j=0;j<50;j++)
{
P2=0x0d;
P1=seg[i/10];
delay(200);
P2=0x0e;
P1=seg[i%10];
delay(200);
}
}
}
}
void delay(int count)
{
int i;
for(i=1;i<=count;i++)
;
}
例:00-59閃爍
#include "reg51.h"
main()
{
void delay(int);
int i,j;
int x=0;
char seg[10]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
while(1)
{
for(i=0;i<60;i++)
{
for(j=0;j<25;j++)//本來50 拆成前25次是亮 後25次是off
{
P2=0x0d;
P1=seg[i/10];
delay(200);
P2=0x0e;
P1=seg[i%10];
delay(200);
}
for(j=0;j<25;j++)
{
P2=0xff;
P1=0xff;
delay(200);
}
}
}
}
void delay(int count)
{
int i;
for(i=1;i<=count;i++)
;
}
2019年7月4日 星期四
4*4 keyborad + 7seg --arduino
int seg7[]={A0,A1,A2,A3,A4,A5,2};
const byte colPins[4] = {9, 8, 7, 6}; // 設定「行」腳位
const byte rowPins[4] = {13, 12, 11, 10}; // 設定「列」腳位
const int keymap[4][4] = { // 設定按鍵的「行、列」代表值
{0xc0,0xf9,0xa4,0xb0},
{0x99,0x92,0x82,0xf8},
{0x80,0x90,0xa0,0x83},
{0xa7,0xa1,0x84,0x8e}
};
byte i, j,num; // 暫存迴圈的索引數字
byte scanVal; // 暫存掃描到的按鍵值
void setup()
{
Serial.begin(9600);
for (i = 0; i <= 3; i++)
{
pinMode(rowPins[i], INPUT);
pinMode(colPins[i], OUTPUT);
digitalWrite(colPins[i], HIGH);
digitalWrite(rowPins[i], HIGH);
}
for(j=0;j<6;j++)
{
pinMode(seg7[j],OUTPUT);
}
pinMode(2,OUTPUT);
}
void outport(byte data)
{
for(num=0;num<7;num++)
{
if(data % 2==1)digitalWrite(seg7[num],HIGH);
else digitalWrite(seg7[num],LOW);
data=data/2;
}
}
void loop()
{
for (i = 0; i <= 3; i++) {
for (j = 0; j <= 3; j++) {
digitalWrite(colPins[j], LOW);
scanVal = digitalRead(rowPins[i]);
if (scanVal == LOW) { // 如果輸入值是「低電位」…
Serial.println(keymap[i][j]); // 輸出按鍵代表的字元
outport(~keymap[i][j]);
delay(200); // 掃描按鍵的間隔時間
digitalWrite(colPins[j], HIGH);
break; // 跳出迴圈
}
digitalWrite(colPins[j], HIGH);
}
}
}
const byte colPins[4] = {9, 8, 7, 6}; // 設定「行」腳位
const byte rowPins[4] = {13, 12, 11, 10}; // 設定「列」腳位
const int keymap[4][4] = { // 設定按鍵的「行、列」代表值
{0xc0,0xf9,0xa4,0xb0},
{0x99,0x92,0x82,0xf8},
{0x80,0x90,0xa0,0x83},
{0xa7,0xa1,0x84,0x8e}
};
byte i, j,num; // 暫存迴圈的索引數字
byte scanVal; // 暫存掃描到的按鍵值
void setup()
{
Serial.begin(9600);
for (i = 0; i <= 3; i++)
{
pinMode(rowPins[i], INPUT);
pinMode(colPins[i], OUTPUT);
digitalWrite(colPins[i], HIGH);
digitalWrite(rowPins[i], HIGH);
}
for(j=0;j<6;j++)
{
pinMode(seg7[j],OUTPUT);
}
pinMode(2,OUTPUT);
}
void outport(byte data)
{
for(num=0;num<7;num++)
{
if(data % 2==1)digitalWrite(seg7[num],HIGH);
else digitalWrite(seg7[num],LOW);
data=data/2;
}
}
void loop()
{
for (i = 0; i <= 3; i++) {
for (j = 0; j <= 3; j++) {
digitalWrite(colPins[j], LOW);
scanVal = digitalRead(rowPins[i]);
if (scanVal == LOW) { // 如果輸入值是「低電位」…
Serial.println(keymap[i][j]); // 輸出按鍵代表的字元
outport(~keymap[i][j]);
delay(200); // 掃描按鍵的間隔時間
digitalWrite(colPins[j], HIGH);
break; // 跳出迴圈
}
digitalWrite(colPins[j], HIGH);
}
}
}
2019年7月3日 星期三
IR控制四個開關_v2
#include <IRremote.h>
long sw1=0xFF30CF;
long sw2=0xFF18E7;
long sw3=0xFF7A85;
long sw4=0xFF10EF;
int i;
int RECV_PIN = 2; // 使用數位腳位2接收紅外線訊號
IRrecv irrecv(RECV_PIN); // 初始化紅外線訊號輸入
decode_results results; // 儲存訊號的結構
const int led[4]={3,4,5,6};
void setup()
{
Serial.begin(9600);
irrecv.blink13(true); // 設為true的話,當收到訊號時,腳位13的LED便會閃爍
irrecv.enableIRIn(); // 啟動接收
for(i=0;i<4;i++)
pinMode(led[i],OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) // 接收紅外線訊號並解碼
{
irrecv.resume(); // 準備接收下一個訊號
if(results.value==sw1)
{
for(i=0;i<4;i++)
{
digitalWrite(led[i],HIGH);delay(1000);
digitalWrite(led[i],LOW);
}
}
else if(results.value==sw2)
{
for(i=3;i>=0;i--)
{
digitalWrite(led[i],HIGH);delay(1000);
digitalWrite(led[i],LOW);
}
}
else if(results.value==sw3)
{
for(i=0;i<4;i++)
{
digitalWrite(led[i],HIGH);delay(1000);
digitalWrite(led[i],LOW);
}
for(i=3;i>=0;i--)
{
digitalWrite(led[i],HIGH);delay(1000);
digitalWrite(led[i],LOW);
}
}
else if(results.value==sw4)digitalWrite(led[3],!digitalRead(led[3]));
}
}
long sw1=0xFF30CF;
long sw2=0xFF18E7;
long sw3=0xFF7A85;
long sw4=0xFF10EF;
int i;
int RECV_PIN = 2; // 使用數位腳位2接收紅外線訊號
IRrecv irrecv(RECV_PIN); // 初始化紅外線訊號輸入
decode_results results; // 儲存訊號的結構
const int led[4]={3,4,5,6};
void setup()
{
Serial.begin(9600);
irrecv.blink13(true); // 設為true的話,當收到訊號時,腳位13的LED便會閃爍
irrecv.enableIRIn(); // 啟動接收
for(i=0;i<4;i++)
pinMode(led[i],OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) // 接收紅外線訊號並解碼
{
irrecv.resume(); // 準備接收下一個訊號
if(results.value==sw1)
{
for(i=0;i<4;i++)
{
digitalWrite(led[i],HIGH);delay(1000);
digitalWrite(led[i],LOW);
}
}
else if(results.value==sw2)
{
for(i=3;i>=0;i--)
{
digitalWrite(led[i],HIGH);delay(1000);
digitalWrite(led[i],LOW);
}
}
else if(results.value==sw3)
{
for(i=0;i<4;i++)
{
digitalWrite(led[i],HIGH);delay(1000);
digitalWrite(led[i],LOW);
}
for(i=3;i>=0;i--)
{
digitalWrite(led[i],HIGH);delay(1000);
digitalWrite(led[i],LOW);
}
}
else if(results.value==sw4)digitalWrite(led[3],!digitalRead(led[3]));
}
}
IR 控制四個led
#include <IRremote.h>
long sw1=0xFF30CF;
long sw2=0xFF18E7;
long sw3=0xFF7A85;
long sw4=0xFF10EF;
int i;
int RECV_PIN = 2; // 使用數位腳位2接收紅外線訊號
IRrecv irrecv(RECV_PIN); // 初始化紅外線訊號輸入
decode_results results; // 儲存訊號的結構
const int led[4]={3,4,5,6};
void setup()
{
Serial.begin(9600);
irrecv.blink13(true); // 設為true的話,當收到訊號時,腳位13的LED便會閃爍
irrecv.enableIRIn(); // 啟動接收
for(i=0;i<4;i++)
pinMode(led[i],OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) // 接收紅外線訊號並解碼
{
irrecv.resume(); // 準備接收下一個訊號
if(results.value==sw1)digitalWrite(led[0],!digitalRead(led[0]));
else if(results.value==sw2)digitalWrite(led[1],!digitalRead(led[1]));
else if(results.value==sw3)digitalWrite(led[2],!digitalRead(led[2]));
else if(results.value==sw4)digitalWrite(led[3],!digitalRead(led[3]));
}
}
long sw1=0xFF30CF;
long sw2=0xFF18E7;
long sw3=0xFF7A85;
long sw4=0xFF10EF;
int i;
int RECV_PIN = 2; // 使用數位腳位2接收紅外線訊號
IRrecv irrecv(RECV_PIN); // 初始化紅外線訊號輸入
decode_results results; // 儲存訊號的結構
const int led[4]={3,4,5,6};
void setup()
{
Serial.begin(9600);
irrecv.blink13(true); // 設為true的話,當收到訊號時,腳位13的LED便會閃爍
irrecv.enableIRIn(); // 啟動接收
for(i=0;i<4;i++)
pinMode(led[i],OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) // 接收紅外線訊號並解碼
{
irrecv.resume(); // 準備接收下一個訊號
if(results.value==sw1)digitalWrite(led[0],!digitalRead(led[0]));
else if(results.value==sw2)digitalWrite(led[1],!digitalRead(led[1]));
else if(results.value==sw3)digitalWrite(led[2],!digitalRead(led[2]));
else if(results.value==sw4)digitalWrite(led[3],!digitalRead(led[3]));
}
}
2019年7月2日 星期二
馬達轉速+button
byte motorPin=3;
int speed=0;
byte bnt1Pin = 4;
byte bnt2Pin = 5;
boolean state1;
boolean state2;
boolean buttonUp1;
boolean buttonUp2;
void setup()
{
Serial.begin(9600);
pinMode(bnt1Pin, INPUT);
pinMode(bnt2Pin, INPUT);
digitalWrite(bnt1Pin, HIGH);
digitalWrite(bnt2Pin, HIGH);
}
void loop()
{
if(digitalRead(bnt1Pin) == LOW && buttonUp1 == true)
{
speed=speed+10;
Serial.println(speed);
if(speed>250) speed=250;
analogWrite(motorPin,speed);
buttonUp1 = false;
}
else if(digitalRead(bnt1Pin) == HIGH && buttonUp1 == false)
{
buttonUp1 = true;
}
if(digitalRead(bnt2Pin) == LOW && buttonUp2 == true)
{
speed=speed-10;
Serial.println(speed);
if(speed<10) speed=10;
analogWrite(motorPin,speed);
buttonUp2 = false;
}
else if(digitalRead(bnt2Pin) == HIGH && buttonUp2 == false)
{
buttonUp2 = true;
}
delay(10); // Delay 時間可視情況調整
}
int speed=0;
byte bnt1Pin = 4;
byte bnt2Pin = 5;
boolean state1;
boolean state2;
boolean buttonUp1;
boolean buttonUp2;
void setup()
{
Serial.begin(9600);
pinMode(bnt1Pin, INPUT);
pinMode(bnt2Pin, INPUT);
digitalWrite(bnt1Pin, HIGH);
digitalWrite(bnt2Pin, HIGH);
}
void loop()
{
if(digitalRead(bnt1Pin) == LOW && buttonUp1 == true)
{
speed=speed+10;
Serial.println(speed);
if(speed>250) speed=250;
analogWrite(motorPin,speed);
buttonUp1 = false;
}
else if(digitalRead(bnt1Pin) == HIGH && buttonUp1 == false)
{
buttonUp1 = true;
}
if(digitalRead(bnt2Pin) == LOW && buttonUp2 == true)
{
speed=speed-10;
Serial.println(speed);
if(speed<10) speed=10;
analogWrite(motorPin,speed);
buttonUp2 = false;
}
else if(digitalRead(bnt2Pin) == HIGH && buttonUp2 == false)
{
buttonUp2 = true;
}
delay(10); // Delay 時間可視情況調整
}
PWM電壓控制
analogWrite輸出PWM電壓控制
訂閱:
文章 (Atom)
algorithm
#include <iostream> #include <string.h> using namespace std; int main(int argc, char** argv) { for(int j=2;j<=100;j++)//j...
-
https://knightkasim.pixnet.net/blog/post/150323886
