Showing posts with label Lớp Học. Show all posts
Showing posts with label Lớp Học. Show all posts

Saturday, September 24, 2016

Giới thiệu về Arduino

Arduino có thể kết nối với những gì ?
Một hệ thống Arduino có thể cung cấp cho bạn rất nhiều sự tương tác với môi trường xung quanh với:
- Hệ thống cảm biến đa dạng về chủng loại (đo đạc nhiệt độ, độ ẩm, gia tốc, vận tốc, cường độ ánh sáng, màu sắc vật thể, lưu lượng nước, phát hiện chuyển động, phát hiện kim loại, khí độc,…),…
- Các thiết bị hiển thị (màn hình LCD, đèn LED,…).
- Các module chức năng (shield) hỗ trợ kêt nối có dây với các thiết bị khác hoặc các kết nối không dây thông dụng (3G, GPRS, Wifi, Bluetooth, 315/433Mhz, 2.4Ghz,…), …
- Định vị GPS, nhắn tin SMS,…và nhiều thứ thú vị khác đang chờ bạn khám phá.
Một vài thông số của Arduino UNO R3
- Vi điều khiển ATmega328 họ 8bit
- Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
- Tần số hoạt động 16 MHz
- Dòng tiêu thụ khoảng 30mA
- Điện áp vào khuyên dùng 7-12V DC
- Điện áp vào giới hạn 6-20V DC
- Số chân Digital I/O 14 (6 chân hardware PWM)
- Số chân Analog 6 (độ phân giải 10bit)
- Dòng tối đa trên mỗi chân I/O 30 mA
- Dòng ra tối đa (5V) 500 mA
- Dòng ra tối đa (3.3V) 50 mA
- Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bởi bootloader
- SRAM 2 KB (ATmega328)
- EEPROM 1 KB (ATmega328)
Năng lượng
Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn ngoài với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V. Thường thì cấp nguồn bằng pin vuông 9V là hợp lí nhất nếu bạn không có sẵn nguồn từ cổng USB. Nếu cấp nguồn vượt quá ngưỡng giới hạn trên, bạn sẽ làm hỏng Arduino UNO.
Các chân năng lượng
- GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi bạn dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau.
- 5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA.
- 3.3V: cấp điện áp 3.3V đầu ra. Dòng tối đa cho phép ở chân này là 50mA.
- Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dương của nguồn với chân này và cực âm của nguồn với chân GND.
- IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở chân này. Và dĩ nhiên nó luôn là 5V. Mặc dù vậy bạn không được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó khô
- RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc chân RESET được nối với GND qua 1 điện trở 10KΩ.
Lưu ý:
- Arduino UNO không có bảo vệ cắm ngược nguồn vào. Do đó bạn phải hết sức cẩn thận, kiểm tra các cực âm – dương của nguồn trước khi cấp cho Arduino UNO. Việc làm chập mạch nguồn vào của Arduino UNO sẽ biến nó thành một miếng nhựa chặn giấy. mình khuyên bạn nên dùng nguồn từ cổng USB nếu có thể.
- Các chân 3.3V và 5V trên Arduino là các chân dùng để cấp nguồn ra cho các thiết bị khác, không phải là các chân cấp nguồn vào. Việc cấp nguồn sai vị trí có thể làm hỏng board. Điều này không được nhà sản xuất khuyến khích.
- Cấp nguồn ngoài không qua cổng USB cho Arduino UNO với điện áp dưới 6V có thể làm hỏng board.
- Cấp điện áp trên 13V vào chân RESET trên board có thể làm hỏng vi điều khiển ATmega328.
- Cường độ dòng điện vào/ra ở tất cả các chân Digital và Analog của Arduino UNO nếu vượt quá 200mA sẽ làm hỏng vi điều khiển.
- Cấp điệp áp trên 5.5V vào các chân Digital hoặc Analog của Arduino UNO sẽ làm hỏng vi điều khiển.
- Cường độ dòng điện qua một chân Digital hoặc Analog bất kì của Arduino UNO vượt quá 40mA sẽ làm hỏng vi điều khiển. Do đó nếu không dùng để truyền nhận dữ liệu, bạn phải mắc một điện trở hạn dòng.
- Khi mình nói rằng bạn “có thể làm hỏng”, điều đó có nghĩa là chưa chắc sẽ hỏng ngay bởi các thông số kĩ thuật của linh kiện điện tử luôn có một sự tương đối nhất định. Do đó hãy cứ tuân thủ theo những thông số kĩ thuật của nhà sản xuất nếu bạn không muốn phải mua một board Arduino UNO thứ 2.Khi mình nói rằng bạn “có thể làm hỏng”, điều đó có nghĩa là chưa chắc sẽ hỏng ngay bởi các thông số kĩ thuật của linh kiện điện tử luôn có một sự tương đối nhất định. Do đó hãy cứ tuân thủ theo những thông số kĩ thuật của nhà sản xuất nếu bạn không muốn phải mua một board Arduino UNO thứ 2.
Bộ nhớ
- Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
+ 32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộ nhớ Flash của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số này sẽ được dùng cho bootloader nhưng đừng lo, bạn hiếm khi nào cần quá 20KB bộ nhớ này đâu.
+ 2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai báo khi lập trình sẽ lưu ở đây. Bạn khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM. Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ mà bạn phải bận tâm. Khi mất điện, dữ liệu trên SRAM sẽ bị mất.
+ 1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): đây giống như một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi dữ liệu của mình vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM.
Các cổng vào/ra
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện trở này không được kết nối).
Một số chân digital có các chức năng đặc biệt như sau:
- 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này. Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây. Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
- Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.
- Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK).  Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác.
- LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi chân này được người dùng sử dụng, LED sẽ sáng.
- Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF trên board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog. Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V  → 2.5V với độ phân giải vẫn là 10bit.
- Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.
Lập trình cho Arduino
- Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngôn riêng. Ngôn ngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói chung. Và Wiring lại là một biến thể của C/C++. Một số người gọi nó là Wiring, một số khác thì gọi là C hay C/C++. Riêng mình thì gọi nó là “ngôn ngữ Arduino”, và đội ngũ phát triển Arduino cũng gọi như vậy. Ngôn ngữ Arduino bắt nguồn từ C/C++ phổ biến hiện nay do đó rất dễ học, dễ hiểu. Nếu học tốt chương trình Tin học 11 thì việc lập trình Arduino sẽ rất dễ thở đối với bạn.
- Để lập trình cũng như gửi lệnh và nhận tín hiệu từ mạch Arduino, nhóm phát triển dự án này đã cũng cấp đến cho người dùng một môi trường lập trình Arduino được gọi là Arduino IDE (Intergrated Development Environment)  như hình dưới đây.

IELTS Listening Section General Strategies


Part 1
Part 2

An IELTS listening section by www.aehelp.com. This video is an IELTS listening strategies part 1 with some example questions. This playlist teaches important strategies for IELTS listening Questions. Follow us on Facebook at www.facebook.com/WorldESLTutors. This video is a part in a series that instructs the steps necessary to achieve a high score, between 7 to 9, on the IETLS listening section question. The series is separated into three sections: 1. Description with Example, 2. Key Strategies and Practice, 3. Specific question strategies. This series will teach you the skills that will help you to reach success on this question during the audio dialogues. Follow the instructions carefully and make sure to practice. It is important to practice a lot for the listening with British accent, so you can think quickly and confidently. Strategies will help with speed and comprehension and accuracy of answers. Enjoy. Follow us now on twitter @aehelp
Orther Video:
https://www.youtube.com/watch?v=nASmTdpPs-c&index=4&list=PL5A77D977C14ECE98
https://www.youtube.com/watch?v=SLj4aud-gxs&index=5&list=PL5A77D977C14ECE98
https://www.youtube.com/watch?v=IoN2TVDQ6xo&index=6&list=PL5A77D977C14ECE98
https://www.youtube.com/watch?v=mZvPoPy6bGo&index=7&list=PL5A77D977C14ECE98
https://www.youtube.com/watch?v=yeB-ra5OUVk&index=8&list=PL5A77D977C14ECE98
https://www.youtube.com/watch?v=6-CZBBBMtfk&index=9&list=PL5A77D977C14ECE98
https://www.youtube.com/watch?v=nCF0a5fNxD8&index=10&list=PL5A77D977C14ECE98
https://www.youtube.com/watch?v=U9NVcsloJ4E&index=11&list=PL5A77D977C14ECE98
https://www.youtube.com/watch?v=u8UM7ZD60Pw&index=12&list=PL5A77D977C14ECE98
https://www.youtube.com/watch?v=Msvi5emnJ1A&index=13&list=PL5A77D977C14ECE98

Friday, September 23, 2016

Sử dụng rơ le (relay) trong Arduino để chạy thiết bị công suất lớn

Hướng dẫn Sử dụng rơ le (relay) trong Arduino để chạy thiết bị công suất lớn.
* Mã code
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;

// the setup routine runs once when you press reset:
void setup() {
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}
* Sơ đồ mạch

Khi dòng điện từ arduino chạy qua cuộn dây trong relay sẽ tạo ra từ trường kéo thanh tạo ra chạm để nối được dòng điện. Hình trên là minh họa các đầu nối của relay

Ngôn ngữ lập trình sử dụng trong lập trình Arduino

1. Cấu trúc chương trình 
// khai báo biến, hằng...
int ledPin = 13;      // select the pin for the LED
// hàm khởi tạo
void setup() {
  // declare the ledPin as an OUTPUT:
  pinMode(ledPin, OUTPUT);
}
// hàm lặp (hàm chính)
void loop() {
  // turn the ledPin on
  digitalWrite(ledPin, HIGH);
  // stop the program for 1000 milliseconds:
  delay(1000);
  // turn the ledPin off:
}
2. Hàm Nhập, Xuất
2.1. digitalRead()
Description: Reads the value from a specified digital pin, either HIGH or LOW.
Syntax: digitalRead(pin)
Parameters: pin: the number of the digital pin you want to read (int)
Returns: HIGH or LOW
Example: Sets pin 13 to the same value as pin 7, declared as an input.
int ledPin = 13; // LED connected to digital pin 13
int inPin = 7;   // pushbutton connected to digital pin 7
int val = 0;     // variable to store the read value
void setup(){
  pinMode(ledPin, OUTPUT);      // sets the digital pin 13 as output
  pinMode(inPin, INPUT);      // sets the digital pin 7 as input
}
void loop(){
  val = digitalRead(inPin);   // read the input pin
  digitalWrite(ledPin, val);    // sets the LED to the button's value
}
If the pin isn't connected to anything, digitalRead() can return either HIGH or LOW (and this can change randomly); The analog input pins can be used as digital pins, referred to as A0, A1, etc.
2.1. digitalWrite()
Description: Write a HIGH or a LOW value to a digital pin.
- If the pin has been configured as an OUTPUT with pinMode(), its voltage will be set to the corresponding value: 5V (or 3.3V on 3.3V boards) for HIGH, 0V (ground) for LOW.
- If the pin is configured as an INPUT, digitalWrite() will enable (HIGH) or disable (LOW) the internal pullup on the input pin. It is recommended to set the pinMode() to INPUT_PULLUP to enable the internal pull-up resistor. See the digital pins tutorial for more information.
NOTE: If you do not set the pinMode() to OUTPUT, and connect an LED to a pin, when calling digitalWrite(HIGH), the LED may appear dim. Without explicitly setting pinMode(), digitalWrite() will have enabled the internal pull-up resistor, which acts like a large current-limiting resistor.
Syntax: digitalWrite(pin, value)
Parameters: pin: the pin number
value: HIGH or LOW
Returns: none
Example
int ledPin = 13;                 // LED connected to digital pin 13
void setup(){
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}
void loop(){
  digitalWrite(ledPin, HIGH);   // sets the LED on
  delay(1000);                  // waits for a second
  digitalWrite(ledPin, LOW);    // sets the LED off
  delay(1000);                  // waits for a second
}
Sets pin 13 to HIGH, makes a one-second-long delay, and sets the pin back to LOW.
Note: The analog input pins can be used as digital pins, referred to as A0, A1, etc.
2.3. analogRead()
Description: Reads the value from the specified analog pin. The Arduino board contains a 6 channel (8 channels on the Mini and Nano, 16 on the Mega), 10-bit analog to digital converter. This means that it will map input voltages between 0 and 5 volts into integer values between 0 and 1023. This yields a resolution between readings of: 5 volts / 1024 units or, .0049 volts (4.9 mV) per unit. The input range and resolution can be changed using analogReference().
It takes about 100 microseconds (0.0001 s) to read an analog input, so the maximum reading rate is about 10,000 times a second.
Syntax: analogRead(pin)
Parameters: pin: the number of the analog input pin to read from (A: 0 to 5 on most boards, 0 to 7 on the Mini and Nano, 0 to 15 on the Mega)
Returns: int (0 to 1023)
Note: If the analog input pin is not connected to anything, the value returned by analogRead() will fluctuate based on a number of factors (e.g. the values of the other analog inputs, how close your hand is to the board, etc.).
Example:  
int analogPin = 3;     // potentiometer wiper (middle terminal) connected to analog pin 3
                       // outside leads to ground and +5V
int val = 0;           // variable to store the value read
void setup(){
  Serial.begin(9600);          //  setup serial
}
void loop(){
  val = analogRead(analogPin);    // read the input pin
  Serial.println(val);             // debug value
}


2.4. analogWrite()
Description: Writes an analog value (PWM wave) to a pin. Can be used to light a LED at varying brightnesses or drive a motor at various speeds. After a call to analogWrite(), the pin will generate a steady square wave of the specified duty cycle until the next call to analogWrite() (or a call to digitalRead() or digitalWrite() on the same pin). The frequency of the PWM signal on most pins is approximately 490 Hz. On the Uno and similar boards, pins 5 and 6 have a frequency of approximately 980 Hz. Pins 3 and 11 on the Leonardo also run at 980 Hz.
- On most Arduino boards (those with the ATmega168 or ATmega328), this function works on pins 3, 5, 6, 9, 10, and 11. On the Arduino Mega, it works on pins 2 - 13 and 44 - 46. Older Arduino boards with an ATmega8 only support analogWrite() on pins 9, 10, and 11.
- The Arduino Due supports analogWrite() on pins 2 through 13, plus pins DAC0 and DAC1. Unlike the PWM pins, DAC0 and DAC1 are Digital to Analog converters, and act as true analog outputs.
You do not need to call pinMode() to set the pin as an output before calling analogWrite().
- The analogWrite function has nothing to do with the analog pins or the analogRead function.
Syntax: analogWrite(pin, value)
Parameters: pin: the pin to write to.
value: the duty cycle: between 0 (always off) and 255 (always on).
Returns: nothing
Notes and Known Issues: The PWM outputs generated on pins 5 and 6 will have higher-than-expected duty cycles. This is because of interactions with the millis() and delay() functions, which share the same internal timer used to generate those PWM outputs. This will be noticed mostly on low duty-cycle settings (e.g 0 - 10) and may result in a value of 0 not fully turning off the output on pins 5 and 6.
Example: Sets the output to the LED proportional to the value read from the potentiometer.
int ledPin = 9;      // LED connected to digital pin 9
int analogPin = 3;   // potentiometer connected to analog pin 3
int val = 0;         // variable to store the read value
void setup(){
  pinMode(ledPin, OUTPUT);   // sets the pin as output
}
void loop(){
  val = analogRead(analogPin);   // read the input pin
  analogWrite(ledPin, val / 4);  // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
}
3. Cấu trúc điều khiển
 if(...){}
 else {}
4. Vòng lặp
  for(int x=0;x<10 span="" x="">
  digitalWrite(ledpin[x],LOW);// tắt các đèn
  }

Thursday, September 22, 2016

Sử dụng Loa (Piezo hay Buzzer) tạo âm thanh - Học Arduino

Hướng dẫn Sử dụng Loa (Piezo hay Buzzer) tạo âm thanh. Nào ta cùng làm:

* Mã Code
#define NOTE_B3  247
#define NOTE_A3  220
#define NOTE_G3  196
#define NOTE_C4  262
// danh sách các nốt nhạc
int melody[] = {NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4};
// thời gina các nốt nhạc: 4 = 1/4 nốt nhạc, 8 = 1/8nốt nhạc, ...:
int noteDurations[] = {4, 8, 8, 4,4,4,4,4 };
int speakerPin = 13;//Chân được nối với loa hoặc buzzer
// the setup routine runs once when you press reset:
void setup() {
  // initialize the digital pin as an output.
   pinMode(speakerPin, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
//không cần phải pinMode cho speakerPin
  for (int thisNote = 0; thisNote < 8; thisNote++) {
    // bây giờ ta đặt một nốt nhạc là 1 giây = 1000 mili giây
    // thì ta chia cho các thành phần noteDurations thì sẽ
    // được thời gian chơi các nốt nhạc
    // ví dụ: 4 => 1000/4; 8 ==> 1000/8 
    int noteDuration = 1000/noteDurations[thisNote];
    tone(speakerPin, melody[thisNote],noteDuration);
    // để phân biệt các nốt nhạc hãy delay giữa các nốt nhạc
    // một khoảng thời gian vừa phải. Ví dụ sau đây thực hiện tốt
    // điều đó: Ta sẽ cộng 30% và thời lượng của một nốt
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    //Ngừng phát nhạc để sau đó chơi nhạc tiếp!
    noTone(speakerPin);
  }           // wait for a second
}

* Sơ đồ mạch

* Lưu ý:
Cần phải có biến trở 10om nếu không sẽ hư loa.

Sử dụng biến trở (Potentionmeter) để thay đổi điện áp một Cổng - Học Arduino

Hướng dẫn Sử dụng biến trở (Potentionmeter) để thay đổi điện áp một Cổng. Nào ta cùng làm:

* Mã Code
// the setup routine runs once when you press reset:
void setup() {
Serial.begin(9600);// mở cổng serial để giao tiếp PC
}
// the loop routine runs over and over again forever:
void loop() {
  int value=analogRead(A0);// đọc điện áp ở chân A0; giá trị luôn từ: 0-1023
  Serial.println(value);// xuất giá trị vừa đọc;
  int voltage=map(value,0,1023,0,5000);// chuyển thang đo của value từ 0-1023 sang 0-5000;
  Serial.println(voltage);// xuất ra đơn vị điện áp là mV
  
  Serial.println();
  delay(200); // đợi 0.2s
}
* Sơ đồ mạch

* Lưu ý:
- Về biến trở: 
+ Chân 1 (terminal 1), và chân 3 (terminal 3) có nối vào Cổng 5V và cổng GND, có thể thay đổi vị trí nhưng sẽ làm thay đổi chiều biến trở.
+ Chân 2 (wiper): để nối vào cổng cần tùy chỉnh điện áp.
 Sử dụng công thức định luật Ôm, ta có thể tính được điện áp lấy ra ở chân 2.

Sử dụng hàm millis() để làm 02 đèn led nhấp nhái với chu kỳ khác nhau - Học Arduino

Hướng dẫn Sử dụng hàm millis() để làm 02 đèn led nhấp nhái với chu kỳ khác nhau. Nào ta cùng làm:


* Mã Code
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led1 = 4;
int led2 = 5;
unsigned long time1 = 0;
unsigned long time2 = 0;
// the setup routine runs once when you press reset:
void setup() {
  // initialize the digital pin as an output.
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  if(millis()-time1>1000){
  if(digitalRead(led1)==LOW)  digitalWrite(led1, HIGH); 
    else  digitalWrite(led1, LOW);
    time1=millis();
  }
  
   if(millis()-time2>300){
  if(digitalRead(led2)==LOW)  digitalWrite(led2, HIGH); 
    else  digitalWrite(led2, LOW);
    time2=millis();
  }
}
* Sơ đồ mạch

* Lưu ý:
- Nếu trong chương trình này dùng hàm delay(int) thì hai đèn led sẽ không thể cùng nhấp nhái với chu kỳ khác nhau.

Làm đèn led sáng theo thứ từ từ 1 -> 10 rồi từ 10 ->1 - Học Arduino

Hướng dẫn điều khiển đèn led sáng theo thứ tự từ đèn thứ 1 đến đèn thứ 10 và ngược lại. Nào ta cùng làm:


* Mã Code

byte ledpin[]={4,5,6,7,8,9,10,11,12,13};

int direction=1;

int currentled=0;

//-----------------

void setup(){

for(int x=0; x<10; x++)

      pinMode(ledpin[x],OUTPUT);// đặt các chân ra
}
//-----------------
void loop(){
for(int x=0;x<10;x++)
   digitalWrite(ledpin[x],LOW);// tắt các đèn
  }
  digitalWrite(ledpin[currentled],HIGH);// mở đèn hiện tại
  currentled+=direction;// tăng chỉ số lên
  if(currentled==9) direction=-1;
  if(currentled==0) direction=1;
  delay(500);
}
* Sơ đồ mạch


* Lưu ý:
- Mắc 10 điện trở theo thứ tự các cổng đề thấy dễ hơn.

Wednesday, September 21, 2016

Điều khiển Led bằng Button (không sử dụng điện trở) - Học Arduino

Hướng dẫn điều khiển đèn led bằng button sử dụng mạch Ardunio - không sử dụng điện trở ngoài mã sử dụng điện trở có sẵn trong mạch Arduno. Cụ thể: cứ mỗi lần bạn nhấn nút button thì trạng thái đèn led sẽ thay đổi từ mở -> tắt hoặc tắt -> mở. Nào ta cùng làm:
* Mã Code
int led = 3;
int button = 8;
int check=-1;
//---------------
void setup() {
  pinMode(led, OUTPUT);    
  pinMode(button, INPUT_PULLUP);  //Cài đặt chân D2 ở trạng thái đọc dữ liệu kiểu INPUT_PULLUP để kích hoạt cái điện trở có sẵn trong mạch Ardunio
}
//-------------
void loop() {
  int buttonStatus = digitalRead(button); //Đọc trạng thái button
  if(buttonStatus==0) check=-check;// đây là trạng thái nhấn
  if(check>0 )
    digitalWrite(led, HIGH);      
  else 
    digitalWrite(led, LOW); 

}
* Sơ đồ mạch

* Lưu ý:
- Trước tiên, ta cần phải biết sự khác nhau của INPUT_PULLUP và INPUT, thực chất INPUT_PULLUP cũng như là INPUT thôi, nhưng cái điện trở mắc ngoài như ở INPUT (bài trước) được "thiết đặt sẵn" bên trong con vi điều khiển của Arduino và khi bạn pinMode một chân là INPUT_PULLUP thì bạn đã kích hoạt cái điện trở này lên. Và sau khi pinMode các chân digital là INPUT_PULLUP, nếu bạn digitalRead các chân này thì sẽ nhận được giá trị HIGH. Nếu bạn nhấn button xuống thì chân  digitalRead sẽ trả về LOW (ngược lại với bài trước)

Điều khiển Led bằng Button (có sử dụng điện trở) - Học Arduino

Hướng dẫn điều khiển đèn led bằng button sử dụng mạch Ardunio. Cụ thể: cứ mỗi lần bạn nhấn nút button thì trạng thái đèn led sẽ thay đổi từ mở -> tắt hoặc tắt -> mở. Nào ta cùng làm:
* Phần mã Code:
int led = 13;// D13 chân digital của đèn led  dùng xuất đèn
int button = 2; // D2 chân digital cả button  dùng kiểm tra ấn nút
int check=-1; // dùng để xác định khi ấn nút button cứ mỗi lần ấn là chuyển trạng thái đèn led
//-------------
void setup() {
  pinMode(led, OUTPUT);  // Đặt led là chân ra
  pinMode(button, INPUT);  //Cài đặt chân D2 ở trạng thái đọc dữ liệu
}
//--------------
void loop() {
  int buttonStatus = digitalRead(button); //Đọc trạng thái button
 // Mỗi lần nhấn nút sẽ đảo trạng thái của đèn led
 if(buttonStatus==1) check=-check;
  if(check>0 )
    digitalWrite(led, HIGH);    
  else
    digitalWrite(led, LOW);
}
* Phần Sơ đồ mạch

* Lưu ý:
- Khi bạn chưa nhấn nút, chân D2 được nối với GND qua một điện trở 10 kΩ, do đó lệnh digitalRead(2) sẽ trả về giá trị 0 (LOW). Khi bạn nhấn nút, chân D2 sẽ được nối trực tiếp với 5V và nối với GND thông qua 1 điện trở 10kΩ, lệnh digitalRead(2) sẽ trả về giá trị 1 (HIGH).
- Khi chưa nhấn nút, nếu bạn nối chân D2 với GND qua 1 điện trở thì người ta gọi điện trở này là điện trở pulldown. Trái lại, nếu bạn nối D2 với chân 5V qua một điện trở thì người ta gọi nó là điện trở pullup. Cách nối ở trên hình sử dụng khi chưa nhấn nút gọi là  cách nối điện trở pulldown.


Thursday, September 15, 2016

Thịnh vượng tài chính tuổi 30 Tập 2 - Sách nói


Thịnh vượng tài chính tuổi 30 (tập 2) là kết quả của sự kết hợp nhuần nhuyễn giữa trí tuệ và kỹ năng quản lý tài chính từ bước đi của một nhà hoạch định tài chính nổi danh của ngân hàng SC First Hàn Quốc .

Thịnh vượng tài chính tuổi 30 Tập 1 - Sách nói




Đây là một cuốn sách thú vị nếu không muốn nói rằng nó thực sự có ích cho bất kỳ ai đang phải đau đầu về các vấn đề tài chính cá nhân: nợ vay mua nhà, nợ vay mua xe hơi, nợ thẻ tín dụng...

Monday, September 12, 2016

Introduction and Example - IELTS Listening


An IELTS listening section by www.aehelp.com. This video is an IELTS listening introduction with an example for part 1. This playlist teaches important strategies for IELTS listening Fill in the Blanks Questions. Follow us on Facebook at www.facebook.com/WorldESLTutors. This video is a part in a series that instructs the steps necessary to achieve a high score, between 7 to 9, on the IETLS listening section question. The series is separated into three sections: 1. Description with Example, 2. Key Strategies and Practice, 3. Specific question strategies. This series will teach you the skills that will help you to reach success on this question during the audio dialogues. Follow the instructions carefully and make sure to practice. It is important to practice a lot for the listening with British accent, so you can think quickly and confidently. Strategies will help with speed and comprehension and accuracy of answers. Enjoy. Follow us now on twitter @aehelp