-วันนี้ทำการเขียนโปรแกรมพื้นฐาน PWM ควบคุมความเร็ว LED
-หาที่ติด limitswich แขนกลของพี่สอง กับ เรียว
-ทำการเขียนโปรแกรม แสดง 7segment
-ผมขอบคุณพี่ๆ ที่fibo จากผมที่ไม่ได้โปรแกรมได้ สอนและช่วยผมให้ได้รู้ว่าการเขียนโปรแกรม หรือ สาขาอื่นๆก็ทำการประยุกต์ใช้งานกันได้ วงจรก็สำคัญเช่นกัน ผมเริ้มจะประยุกต์ให้กับวงจรของผมได้แล้ว (ได้มากกว่าเดิมยิ่งขึ้นๆไป)
https://www.youtube.com/watch?v=cUvcnI3f7ec คริปนี้แสดงการทำงานการ PWM analog,output digital
http://vladromanov.com/154/arduino-tutorial-2-analog-inputs-and-pulse-width-modulation-pwm-rgb-led/ ตัวอย่างการทำงาน มีคริปด้วย
https://www.google.co.th/search?q=pwm+arduino++led&biw=1280&bih=699&source=lnms&tbm=isch&sa=X&ei=N4xeVZaEGoTiuQTQpYPIAw&ved=0CAYQ_AUoAQ เป็นรูปภาพ การใช้งาน arduino กับ LED
http://www.dave-auld.net/index.php?option=com_content&view=article&id=99:arduino-digital-out-pwm-led&catid=53:arduino-input-output-basics&Itemid=107
งานที่ทำตอนเช้าวันนี้
int analog = A3;
int RValue = 0;
void setup() {
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
pinMode(8,OUTPUT);
pinMode(7,OUTPUT);
pinMode(6,OUTPUT);
pinMode(3,INPUT);
pinMode(2,INPUT);
pinMode(14,INPUT);
pinMode(15,INPUT);
}
void loop() {
RValue = analogRead(analog);
if(digitalRead(2)==HIGH){
button1();
}
if(digitalRead(3)==HIGH){
button2();
}
if(digitalRead(14)==HIGH){
button3();
}
if(digitalRead(15)==HIGH){
button4();
}
}
void button1(){
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
digitalWrite(12,HIGH);
delay(500);
digitalWrite(12,LOW);
delay(500);
digitalWrite(11,HIGH);
delay(500);
digitalWrite(11,LOW);
delay(500);
digitalWrite(10,HIGH);
delay(500);
digitalWrite(10,LOW);
delay(500);
digitalWrite(9,HIGH);
delay(500);
digitalWrite(9,LOW);
delay(500);
digitalWrite(8,HIGH);
delay(500);
digitalWrite(8,LOW);
delay(500);
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(500);
digitalWrite(6,HIGH);
delay(500);
digitalWrite(6,LOW);
delay(500);
}
void button2(){
digitalWrite(6,HIGH);
delay(500);
digitalWrite(6,LOW);
delay(500);
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(500);
digitalWrite(8,HIGH);
delay(500);
digitalWrite(8,LOW);
delay(500);
digitalWrite(9,HIGH);
delay(500);
digitalWrite(9,LOW);
delay(500);
digitalWrite(10,HIGH);
delay(500);
digitalWrite(10,LOW);
delay(500);
digitalWrite(11,HIGH);
delay(500);
digitalWrite(11,LOW);
delay(500);
digitalWrite(12,HIGH);
delay(500);
digitalWrite(12,LOW);
delay(500);
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
void button3(){
digitalWrite(13,HIGH);
delay(RValue);
digitalWrite(13,LOW);
delay(RValue);
digitalWrite(12,HIGH);
delay(RValue);
digitalWrite(12,LOW);
delay(RValue);
digitalWrite(11,HIGH);
delay(RValue);
digitalWrite(11,LOW);
delay(RValue);
digitalWrite(10,HIGH);
delay(RValue);
digitalWrite(10,LOW);
delay(RValue);
digitalWrite(9,HIGH);
delay(RValue);
digitalWrite(9,LOW);
delay(RValue);
digitalWrite(8,HIGH);
delay(RValue);
digitalWrite(8,LOW);
delay(RValue);
digitalWrite(7,HIGH);
delay(RValue);
digitalWrite(7,LOW);
delay(RValue);
digitalWrite(6,HIGH);
delay(RValue);
digitalWrite(6,LOW);
delay(RValue);
}
void button4(){
digitalWrite(6,HIGH);
delay(RValue);
digitalWrite(6,LOW);
delay(RValue);
digitalWrite(7,HIGH);
delay(RValue);
digitalWrite(7,LOW);
delay(RValue);
digitalWrite(8,HIGH);
delay(RValue);
digitalWrite(8,LOW);
delay(RValue);
digitalWrite(9,HIGH);
delay(RValue);
digitalWrite(9,LOW);
delay(RValue);
digitalWrite(10,HIGH);
delay(RValue);
digitalWrite(10,LOW);
delay(RValue);
digitalWrite(11,HIGH);
delay(RValue);
digitalWrite(11,LOW);
delay(RValue);
digitalWrite(12,HIGH);
delay(RValue);
digitalWrite(12,LOW);
delay(RValue);
digitalWrite(13,HIGH);
delay(RValue);
digitalWrite(13,LOW);
delay(RValue);
}
ด้านบนเป็นCode ที่เข้าใจง่าย แต่ยุ่งยาก เพราะต้องเขียนเยอะ
int analog = A3;
int RValue = 0;
void setup()
{
for(int i=6;i<=13;i++)
{
pinMode(i,OUTPUT);
}
for(int j=13;j<=6;j--)
{
pinMode(j,OUTPUT);
}
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(14,INPUT);
pinMode(15,INPUT);
}
void loop() {
RValue = analogRead(analog);
if(digitalRead(2)==HIGH){
for(int i=6;i<=13;i++){
digitalWrite(i,HIGH);
delay(100);
digitalWrite(i,LOW);
delay(100);
}
}
if(digitalRead(3)==HIGH){
for(int j=13;j>=6;j--){
digitalWrite(j,HIGH);
delay(100);
digitalWrite(j,LOW);
delay(100);
}
}
if(digitalRead(14)==HIGH){
for(int i=6;i<=13;i++){
digitalWrite(i,HIGH);
delay(RValue);
digitalWrite(i,LOW);
delay(RValue);
}
}
if(digitalRead(15)==HIGH){
for(int j=13;j>=6;j++){
digitalWrite(j,HIGH);
delay(RValue);
digitalWrite(j,LOW);
delay(RValue);
}
}
}
Code ด้านบนเป็นแบบใช้ for
ทั้งสองcode การทำงานเหมือนกัน แต่คำสั่งที่ใช้ต่างกันและเข้าใจ ตามลำดับ
http://logicdesign5630183.blogspot.com/2014/09/32-7-segment-display-bcd.html
const byte SEVEN_SEG[7] = {2, 3, 4, 5, 6, 7, 8};const byte SEVEN_SEG2[7] = { 9, 10, 11, 12, 13, 44, 45};const byte ZeroToNine[10][7] = {{1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 0, 0, 0, 0}, {1, 1, 0, 1, 1, 0, 1}, {1, 1, 1, 1, 0, 0, 1}, {0, 1, 1, 0, 0, 1, 1}, {1, 0, 1, 1, 0, 1, 1}, {1, 0, 1, 1, 1, 1, 1}, {1, 1, 1, 0, 0, 0, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 0, 1, 1}};
void setup() { for (int i = 0; i < 7; i++) { pinMode(SEVEN_SEG[i], OUTPUT); pinMode(SEVEN_SEG2[i], OUTPUT); digitalWrite(SEVEN_SEG[i], HIGH ); digitalWrite(SEVEN_SEG2[i], HIGH ); }}
int count = 0;
void loop() {
if (count <= 99) { for (int i = 0; i < 10; i++) { for (int l = 0; l < 7; l++) { digitalWrite(SEVEN_SEG[l], ZeroToNine[i][l] ); }
for (int j = 0; j < 10; j++) { for (int k = 0; k < 7; k++) { ; digitalWrite(SEVEN_SEG2[k], ZeroToNine[j][k] ); } count++; delay(1000); } } } else count = 0;
}




ไม่มีความคิดเห็น:
แสดงความคิดเห็น