Showing posts with label Arduino. Show all posts
Showing posts with label Arduino. Show all posts

THÔNG BÁO !

6:43:00 AM Add Comment
Xin chào các bạn Blog này bị lỗi quá nhiều và bài viết cũng sơ xài nên mình đã tạo 1 Blog mới và tất cả bài đăng trong Blog này mình sẽ chuyển dần sang Blog mới nên Blog này mình sẽ không đăng bài đăng mới nữa nha ! Mong các bạn thông cảm và ủng hộ Blog mới ! Các bạn có thể xem Blog mới Tại Đây ! Thanks you !


Blog mới sẽ được đầu tư về bài viết kỹ càng hơn ! Blog mới có tên là  Programming PIC ! Các bạn đăng ký làm thành viên và Share Blog để tiếp cạn nhiều người hơn để blog này ngày càng phát triển ! Link  xem Blog mới http://xcvn.blogspot.com/

THƯ VIỆN MÔ PHỎNG CHO ARDUINO TRÊN PROTUES

7:27:00 AM 7 Comments
Chào các bạn hôm này mình sẽ giới thiệu vè chia sẽ với các bạn một thư viện hỗ trợ mô phỏng Arduino trên phần mềm protues. Trước tiên mình xin giới thiệu với các bạn các Board Arduino có thể mô phỏng được.
1. SIMULINO UNO


THƯ VIỆN MÔ PHỎNG CHO ARDUINO TRÊN PROTUES

2. SIMULINO LILYPAD



3. SIMULINO MEGA



4. SIMULINO NANO



5. ULTRASONIC V2



- Link download thư viện Click here .
Hương dẫn sử dụng sau khi download file về các bạn giải nén và copy 2 file trong thư mục past vào đường dẫn sau : C:\ProgramData\Labcenter Electronics\Proteus 8 Professional\LIBRARY sau đó các ban mở Protues lên lên và gõ đúng các tên như mình đã nêu ở trên và lôi ra sử dụng thôi nha ! Chúc các bạn thành công ai có thắc mắc gì thì comment ở dưới nha !

LM35 with Arduino

8:59:00 AM Add Comment

Cảm biến nhiệt độ LM35

Mô tả:
Cảm biến LM35 là bộ cảm biến nhiệt mạch tích hợp chính xác cao mà điện áp đầu ra của nó tỷ lệ tuyến tính với nhiệt độ theo thang độ Celsius. Chúng cũng không yêu cầu cân chỉnh ngoài vì vốn chúng đã được cân chỉnh. Cảm biến LM35 hoạt động bằng cách cho ra một giá trị hiệu điện thế nhất định tại chân Vout (chân giữa) ứng với mỗi mức nhiệt độ.

Thông số kỹ thuật:
  •  Điện áp đầu vào từ 4V đến 30V
  •  Điện áp ra: -1V đến 6V
  •  Công suất tiêu thụ là 60uA
  •  Độ phân giải điện áp đầu ra là 10mV/oC
  •  Độ chính xác cao ở 25 C là 0.5 C
  •  Trở kháng đầu ra thấp 0.1 cho 1mA tải
  •  Độ chính xác thực tế: 1/4°C ở nhiệt độ phòng và 3/4°C ngoài khoảng -55°C tới 150°C

Ví dụ:
Dải nhiệt độ đo được của LM35 là từ -55 C - 150 C với các mức điện áp ra khác nhau. Xét một số mức điện áp sau :
  •     Nhiệt độ -55 C điện áp đầu ra -550mV
  •     Nhiệt độ 25 C điện áp đầu ra 250mV
  •     Nhiệt độ 150 C điện áp đầu ra 1500mV
Ảnh mô phỏng protues.

lm35 arduino

Link download project.

Button and 7seg with Arduino

3:32:00 AM Add Comment
Giới thiệu Có lẽ chúng ta đã quá quen với các loại button, nút nhấn rồi. Tuy nhiên, có thể, chỉ có thể thôi nhé, bạn vẫn chưa biết hết về các loại nút nhấn phổ biến. Vì vậy, hôm nay, mình sẽ tổng hợp giúp bạn các loại button phổ biến và cách dùng của nó. Button là gì ? Button là nút bấm, bạn có thể tìm thấy nó ở mọi thứ trong cuộc sống, chẳng hạn như cái nút trong bàn phím của bạn.  

button


Các loại button Button có rất nhiều loại, và mỗi loại lại có ứng dụng riêng của nó. Vì vậy, chỉ cần vận dụng hợp lý và sáng tạo các loại button - nút bấm, bạn sẽ làm nên những dự án cực.

1. Button (thường) (6mm hoặc 12mm)
Đây là loại button rất phổ biến, cũng như đèn LED, loại button này cũng có các kính thước cạnh 6mm hoặc 12m. Loại 6mm hay được dùng trong các dự án nhỏ và loại còn lại dùng cho các dự án bự hơn và cần nút to để ngầu hơn. Mình thì cực thích loại 12mm vì nó to, dễ hàn và bấm sướng tay, không đau tay như loại 6mm. Và giá thành thì khá rẻ, loại 6mm có giá khoảng 1500 dồng và 2500 đồng cho loại 12mm.



Nút nhấn 6mm
Nút nhấn 12mm
Loại này tuy là 4 chân, nhưng thực chất cũng chỉ là 2 chân mà thôi, bạn xem hình dưới là rõ ngay.
button
Ngoài ra, vì có 4 chân nên nó khá vững chãi và rất khó hư! 
Ảnh mô phỏng proteus.
7seg and button with Arduino 
Code chương trình.
 byte numbers[10] = { 
                    B11111100, B01100000, B11011010, B11110010, B01100110, 
                    B10110110, B10111110, B11100000, B11111110, B11110110 
                    };
void setup() { 
    for(int i = 2; i <= 8; i++) {
        pinMode(i, OUTPUT); 
    }
    pinMode(9, INPUT);
}

int counter = 0;
bool go_by_switch = true;
int last_input_value = LOW;

void loop() {
    if(go_by_switch) {
        int switch_input_value = digitalRead(9);
        if(last_input_value == LOW && switch_input_value == HIGH) {
            delay(100); 
            counter = (counter + 1) % 10;
        }
        last_input_value = switch_input_value;
    } else {
        delay(100); 
        counter = (counter + 1) % 10;
    }
    writeNumber(counter);
}

void writeNumber(int number) {
    if(number < 0 || number > 9) {
        return;
    }
    byte mask = numbers[number];
    byte currentPinMask = B10000000;
    for(int i = 2; i <= 8; i++) {
        if(mask & currentPinMask) digitalWrite(i,HIGH); 
        else digitalWrite(i,LOW);
    currentPinMask = currentPinMask >> 1;
    }
}

Led 7seg with Arduino

3:22:00 AM Add Comment
Giới thiệu sơ lược về Led 7seg.
Led 7 đoạn
Hình ảnh: Led 7 đoạn
Ngày nay có rất nhiều thiết bị hiển thị trên thị trường trong đó có Led 7 đoạn là một linh kiện cần thiết và được ứng dụng nhiều trong cuộc sống như: làm đồng hồ led vạn niên, ứng dụng trong công nghiệp. Tuy màn hình LCD đang rất phát triển nhưng không thể phủ nhận được công dụng của Led 7 đoạn.
Để giúp các bạn hiểu rõ hơn về hoạt động của Led 7 đoạn và dễ dàng hơn trong việc lập trình cho Led 7 đoạn sau này thì mình sẽ giới thiệu qua cho các bạn về Led 7 đoạn

PHÂN LOẠI VÀ CẤU TẠO CỦA LED 7 ĐOẠN 

  • Led 7 thanh có cấu tạo bao gồm 7 led đơn có dạng thanh xếp theo Hình 1.1 dưới và có thêm một led đơn hình tròn nhỏ thể hiện dấu chấm tròn ở góc dưới, bên phải của led 7 thanh. 8 led đơn trên led 7 đoạn có Aode(cực +) hoặc Cathode(cực -) được nối chung với nhau vào một điểm, được đưa chân ra ngoài để kết nối với mạch điện.
  • 8 cực còn lại trên mỗi led đơn được đưa thành 8 chân riêng:
    • Nếu led 7 đoạn có Anode(cực +) chung, đầu chung này được nối với +Vcc, các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 0.
    • Nếu led 7 đoạn có Cathode (cực -) chung, đầu chung này được nối xuống Ground (hay Mass), các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 1.
led 7seg
Hình 1.1
Ảnh mô phỏng protues.

led 7seg with Arduino

Code chương trình.

int latchPin = 8;
//chân SH_CP của 74HC595
int clockPin = 12;
//Chân DS của 74HC595
int dataPin = 11;
const int Seg[10] = {
  0b11000000,//0 - các thanh từ a-f sáng
  0b11111001,//1 - chỉ có 2 thanh b,c sáng
  0b10100100,//2
  0b10110000,//3
  0b10011001,//4
  0b10010010,//5
  0b10000011,//6
  0b11111000,//7
  0b10000000,//8
  0b10010000,//9
};
void setup() {
  //Bạn BUỘC PHẢI pinMode các chân này là OUTPUT
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  static int point = 0;
  //shiftout - start
  digitalWrite(latchPin, LOW);
  //Xuất bảng ký tự ra cho Module LED
  shiftOut(dataPin, clockPin, MSBFIRST, Seg[point]);
  digitalWrite(latchPin, HIGH);
  //shiftout - end
  point = (point + 1) % 10; // Vòng tuần hoàn từ 0--9
  delay(500);//Đợi 0.5 s cho mỗi lần tăng số
}

LCD with Arduino

8:34:00 AM Add Comment
Với Vi điều khiển nói chung, việc hiển thị thông tin là rất quang trọng. Trong bài viết này, tôi sẽ hướng dẫn bạn cách làm sao để lập trình cho LCD 16x2.
lcd 16x02
  LCD 16x2 giao tiếp theo phương pháp song song kết hợp mã Lệnh và chân điều khiển. Chúng ta không bàn sâu về cấu trúc của nó mà ở đây ta chỉ bàn đến vấn đề lập trình. Nếu bạn muốn tìm hiểu sâu về cấu trúc, bạn có thể tải về và đọc datasheet của nó. 


 Ảnh mô phỏng protues.


Lcd with Arduino

Code chương trình.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);

void setup()
{
  lcd.begin(16, 2);
  lcd.clear();
  lcd.print("hello, world!");

void loop()
{
  lcd.setCursor(0,1);
  lcd.print(millis()/1000);

}

Chase Led with Arduino

8:22:00 AM Add Comment
Công nghệ chiếu sáng led có rất nhiều ưu điểm , điển hình là tuổi thọ cao, giá thành hợp lý, ít gây ô nhiễm môi trường,……trong tương lai không xa, đèn led sẽ trở thành một phần quan trọng trong cuộc sống hàng ngày của con người với những ưu điểm của nó.
 Ưu điểm của LED- Hiệu quả: LED có hiệu suất phát sáng cao hơn bóng sợi đốt.
- Kích thước: Kích thước của bóng LED rất nhỏ, vì vậy có thể bố trí dễ dàng trên mạch in.
- Thời gian bật tắt nhanh: Led có thời gian bật và tắt rất nhanh kể từ lúc có tác động(micro giây). Điều này rất quan trọng trong thông tin liêc lạc, lĩnh vực yêu cầu có thời gian đáp ứng nhanh.
- Tuổi thọ đèn cao: Đây là ưu điểm lớn nhất của đèn LED, tuổi thọ của đèn LED vào khoảng 35.000 đến 50.000 giờ, lớn hơn nhiều lần so với bóng huỳnh quang và sợi đốt.
- Độ bền cao: LED được làm từ vật liệu bán dẫn, nên rất khó bị phá huỷ bởi sự va đập...
- An toàn: LED không gây độc hại, rất thân thiện với môi trường.

Ứng dụng của LED LED có rất nhiều ứng dụng trong thực tiễn ngày nay nhưng tựu trung lại bao gồm ba lĩnh vực chính:
- LED làm bộ phận hiển thị trong các thiết bị điện điện tử, đèn quảng cáo, trang trí, đèn giao thông...
- LED còn ứng dụng trong lĩnh vực chiếu sáng vì những ưu điểm của nó hoàn toàn có thể thay thế những nguồn sáng thông thường khác.
- LED còn được ứng dụng trong lĩnh vực điện tử viễn thông như trong thiết bị điều khiển từ xa, cảm biến hồng ngoại, công nghệ truyền dữ liệu qua tia hồng ngoại(IrDA), LED UV khử trùng nước.


 Ảnh mô phỏng protues.

chase led arduino

Code chương trình.
int ledPins[] = {2,3,4,5,6,7,8,9};
void setup()
{
  int index;
  for(index = 0; index <= 7; index++)
  {
    pinMode(ledPins[index],OUTPUT);
     }
}

void loop()
{
    oneAfterAnotherNoLoop();  // Light up all the LEDs in turn
}

void oneAfterAnotherNoLoop()
{
  int delayTime = 100; // time (milliseconds) to pause between LEDs
  digitalWrite(ledPins[0], HIGH);  //Turns on LED #0 (pin 2)
  delay(delayTime);                //wait delayTime milliseconds
  digitalWrite(ledPins[1], HIGH);  //Turns on LED #1 (pin 3)
  delay(delayTime);                //wait delayTime milliseconds
  digitalWrite(ledPins[2], HIGH);  //Turns on LED #2 (pin 4)
  delay(delayTime);                //wait delayTime milliseconds
  digitalWrite(ledPins[3], HIGH);  //Turns on LED #3 (pin 5)
  delay(delayTime);                //wait delayTime milliseconds
  digitalWrite(ledPins[4], HIGH);  //Turns on LED #4 (pin 6)
  delay(delayTime);                //wait delayTime milliseconds
  digitalWrite(ledPins[5], HIGH);  //Turns on LED #5 (pin 7)
  delay(delayTime);                //wait delayTime milliseconds
  digitalWrite(ledPins[6], HIGH);  //Turns on LED #6 (pin 8)
  delay(delayTime);                //wait delayTime milliseconds
  digitalWrite(ledPins[7], HIGH);  //Turns on LED #7 (pin 9)
  delay(delayTime);                //wait delayTime milliseconds  

  // turn all the LEDs off:

  digitalWrite(ledPins[7], LOW);   //Turn off LED #7 (pin 9)
  delay(delayTime);                //wait delayTime milliseconds
  digitalWrite(ledPins[6], LOW);   //Turn off LED #6 (pin 8)
  delay(delayTime);                //wait delayTime milliseconds
  digitalWrite(ledPins[5], LOW);   //Turn off LED #5 (pin 7)
  delay(delayTime);                //wait delayTime milliseconds
  digitalWrite(ledPins[4], LOW);   //Turn off LED #4 (pin 6)
  delay(delayTime);                //wait delayTime milliseconds
  digitalWrite(ledPins[3], LOW);   //Turn off LED #3 (pin 5)
  delay(delayTime);                //wait delayTime milliseconds
  digitalWrite(ledPins[2], LOW);   //Turn off LED #2 (pin 4)
  delay(delayTime);                //wait delayTime milliseconds
  digitalWrite(ledPins[1], LOW);   //Turn off LED #1 (pin 3)
  delay(delayTime);                //wait delayTime milliseconds
  digitalWrite(ledPins[0], LOW);   //Turn off LED #0 (pin 2)
  delay(delayTime);                //wait delayTime milliseconds  
}
void oneAfterAnotherLoop()
{
  int index;
  int delayTime = 100; // milliseconds to pause between LEDs
   for(index = 0; index <= 7; index++)
  {
    digitalWrite(ledPins[index], HIGH);
    delay(delayTime);                
  }                                  
  for(index = 7; index >= 0; index--)
  {
    digitalWrite(ledPins[index], LOW);
    delay(delayTime);
  }               
}
void oneOnAtATime()
{
  int index;
  int delayTime = 100; // milliseconds to pause between LEDs
   for(index = 0; index <= 7; index++)
  {
    digitalWrite(ledPins[index], HIGH);  // turn LED on
    delay(delayTime);                    // pause to slow down
    digitalWrite(ledPins[index], LOW);   // turn LED off
  }
}
void pingPong()
{
  int index;
  int delayTime = 100; // milliseconds to pause between LEDs
  for(index = 0; index <= 7; index++)
  {
    digitalWrite(ledPins[index], HIGH);  // turn LED on
    delay(delayTime);                    // pause to slow down
    digitalWrite(ledPins[index], LOW);   // turn LED off
  }
  for(index = 7; index >= 0; index--)
  {
    digitalWrite(ledPins[index], HIGH);  // turn LED on
    delay(delayTime);                    // pause to slow down
    digitalWrite(ledPins[index], LOW);   // turn LED off
  }
}
void marquee()
{
  int index;
  int delayTime = 200; // milliseconds to pause between LEDs
    for(index = 0; index <= 3; index++) // Step from 0 to 3
  {
    digitalWrite(ledPins[index], HIGH);    // Turn a LED on
    digitalWrite(ledPins[index+4], HIGH);  // Skip four, and turn that LED on
    delay(delayTime);                      // Pause to slow down the sequence
    digitalWrite(ledPins[index], LOW);     // Turn the LED off
    digitalWrite(ledPins[index+4], LOW);   // Skip four, and turn that LED off
  }
}
void randomLED()
{
  int index;
  int delayTime;
  index = random(8);    // pick a random number between 0 and 7
  delayTime = 100;

  digitalWrite(ledPins[index], HIGH);  // turn LED on
  delay(delayTime);                    // pause to slow down
  digitalWrite(ledPins[index], LOW);   // turn LED off
}

Led and Button with Arduino

8:16:00 AM 2 Comments

LED là gì?

LED, viết tắt của Light-Emitting-Diode có nghĩa là “đi-ốt phát sáng”, là một nguồn sáng phát sáng khi có dòng điện tác động lên nó. Được biết tới từ những năm đầu của thế kỷ 20, công nghệ LED ngày càng phát triển, từ những diode phát sáng đầu tiên với ánh sáng yếu và đơn sắc đến những nguồn phát sáng đa sắc, công suất lớn hay phát ra các tia hồng ngoại hoặc tử ngoại.

cấu tạo led

1.1 Cấu tạo Led đơn và nguyên tắc hoạt động.

Nguyên tắc hoạt động.
Hình vẽ cho thấy Led được cấu tạo từ một mối nối bán dẫn PN, khi chất bán dẫn Silicon cho pha Indium (có 3 nối hóa trị, khi gắn nó vào mạng Silicon cần 4 nối, sẽ có một nối thiếu điện tử và cho ra 1 lỗ trống) chúng ta sẽ có chân bán dẫn loại P và khi cho pha với Phosphor (có 5 nối hóa trị, khi gắn nó vào mạng Silicon cần 4 nối, sẽ dư ra 1 hạt điện tử), chúng ta có chân bán dẫn loại N.
Chất bản dẫn loại P tạo điều kiện dẫn điện bằng các lỗ trống (Hole), đó chính là các nối hóa trị thiếu điện tử. Còn chất bán dẫn loại N có điểu kiện dẫn điện là do các điện tử tự do (điện tử dư ra do phosphor có 5 điện tử hóa trị mà trong kết nối tinh thể chỉ cần có 4 ).
Khi mối nối PN được cho phân cực thuận với nguồn pin ngoài, một dòng điện kích thích khi chảy qua mối nối bán dẫn PN sẽ tạo các dao động của các điện tử (Bạn xem hình) và các dao động này sẽ phát ra sóng điện từ trường đó chính là các tia sáng. Tóm lại Led có 2 chân, gọi là chân âm cực hay Cathode ( do chân này cho nối vào cực âm của pin) và chân dương cực hay Anode (do chân này cho nối vào cực dương của pin), khi chúng ta cho dòng điện chảy qua một Led nó sẽ phát ra chùm tia sáng, và để có điềm sáng đủ mạch, chúng ta dùng vật liệu nhựa trong suốt làm kính hội tụ (Bạn xem hình cấu tạo của Led).
upload_2013-11-16_13-32-47.

1.2 Các hình dạng Led phổ biến

 2. Ưu, Nhược điểm của đèn Led
Ưu điểm: Có hiệu suất phát sáng cao hơn bóng sợi đốt.

Mầu sắc: LED có thể phát ra màu sắc như ý muốn mà không cần bộ lọc màu theo phương pháp truyền thống.
Kích thước: Kích thước của bóng LED rất nhỏ (có thể nhỏ hơn 2 mm2) vì vậy có thể bố trí dễ dàng trên mạch in.
Thời gian bật tắt nhanh: Led có thời gian bật và tắt rất nhanh kể từ lúc có tác động (micro giây). Điều này rất quan trọng trong thông tin liêc lạc, lĩnh vực yêu cầu có thời gian đáp ứng nhanh.
Độ sáng tối: LED có thể dễ dàng điều khiển độ sáng tối bằng phương pháp điều chế độ rộng xung hoặc tăng giảm dòng điện tác động.
Tuổi thọ đèn cao: Đây là ưu điểm lớn nhất của đèn LED, tuổi thọ của đèn LED vào khoảng 35000 đến 50000 giờ, lớn hơn nhiều lần so với bóng huỳnh quang và sợi đốt.
Độ bền cao: LED được làm từ vật liệu bán dẫn, nên rất khó bị phá huỷ bởi sự va đập...
An toàn: LED không gây độc hại, thân thiện với môi trường.
Nhược điểm:
Chất lượng của đèn Led trên thị thường không giống nhau nên dễ tạo hiểu nhầm về chất lượng chung của Led
3. Ứng dụng của đèn LED
Với các ưu điểm: ánh sáng lớn, độ bền cao và ít tiêu tốn điện năng, Đèn Led được ứng dụng rộng rãi trên các lĩnh vực: bảng quảng cáo ngoài trời , bảng quảng báo, đồng hồ cỡ lớn đặt tại các biển quảng cáo tấm lớn trên đường cao tốc, hệ thống đèn giao thông, biển chỉ dẫn, và các sản phẩm khác như bảng chạy chữ điện tử, bảng hệ thống giờ, Bảng tỷ giá, bảng chứng khoán, hệ thống xếp hàng tự động… Việc sử dụng rộng rãi thiết bị chiếu sáng bằng loại đèn này có thể giúp chúng ta tiết kiệm đuợc nhiều năng lượng.
Hiện tại đèn LED trắng có tuổi thọ tới 50.000 giờ sử dụng, gấp 50 lần so với bóng đèn 60W. Điều này có nghĩa là chúng có thể thắp sáng liên tục trong vòng 6 năm.
Điểm hấp dẫn ở loại đèn này là nó có thể sử dụng để lắp đặt ở những nơi khó thay lắp chẳng hạn như bên ngoài toà nhà, bể bơi v.v… với nhiều mầu sắc phong phú như: đỏ, xanh lá, xanh da trời, mầu hổ phách... thay vì phải sử dụng bóng đèn thông thường.
Đèn LED thay thế đèn sợi đốt và đèn huỳnh quang bởi những ưu điểm như tiết kiệm năng lượng, tuổi thọ cao, kích cỡ nhỏ, nhiệt năng sinh ra trong quá trình hoạt động không đáng kể, hoạt động tốt trong điều kiện nhiệt độ thấp, không sử dụng thủy ngân giống như các loại bóng huỳnh quang thông thường.

button led arduino

Code chương trình.
const int button1Pin = 2;  // pushbutton 1 pin
const int button2Pin = 3;  // pushbutton 2 pin
const int ledPin =  13;    // LED pin
void setup()
{
  // Set up the pushbutton pins to be an input:
  pinMode(button1Pin, INPUT);
  pinMode(button2Pin, INPUT);
  // Set up the LED pin to be an output:
  pinMode(ledPin, OUTPUT);      
}
void loop()
{
  int button1State, button2State;  // variables to hold the pushbutton states
  if (((button1State == LOW) || (button2State == LOW))  // if we're pushing button 1 OR button 2
      && !                                               // AND we're NOT
      ((button1State == LOW) && (button2State == LOW))) // pushing button 1 AND button 2
                                                       // then...
  {
    digitalWrite(ledPin, HIGH);  // turn the LED on
  }
  else
  {
    digitalWrite(ledPin, LOW);  // turn the LED off
  }
}