arduino

Hàm analogReference ()

Định cấu hình điện áp tham chiếu được sử dụng cho đầu vào tương tự (tức là giá trị được sử dụng làm đỉnh của dải đầu vào). Các tùy chọn là –

  • DEFAULT – Tham chiếu tương tự mặc định là 5 volt (trên bảng Arduino 5V) hoặc 3,3 volt (trên bảng Arduino 3,3V)
  • INTERNAL– Tham chiếu tích hợp sẵn, bằng 1,1 vôn trên ATmega168 hoặc ATmega328 và 2,56 vôn trên ATmega8 (không khả dụng trên Arduino Mega)
  • INTERNAL1V1 – Tham chiếu 1.1V tích hợp sẵn (chỉ Arduino Mega)
  • INTERNAL2V56 – Tham chiếu 2,56V tích hợp sẵn (chỉ Arduino Mega)
  • BÊN NGOÀI – Điện áp được áp dụng cho chân AREF (chỉ 0 đến 5V) được sử dụng làm tham chiếu

Cú pháp hàm analogReference ()

analogReference (type);

loại – có thể sử dụng bất kỳ loại nào sau đây (DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56, EXTERNAL)

Không sử dụng bất kỳ thứ gì nhỏ hơn 0V hoặc hơn 5V cho điện áp tham chiếu bên ngoài trên chân AREF. Nếu bạn đang sử dụng tham chiếu bên ngoài trên chân AREF, bạn phải đặt tham chiếu tương tự thành EXTERNAL trước khi gọi hàm analogRead () . Nếu không, bạn sẽ làm ngắn điện áp tham chiếu đang hoạt động (được tạo bên trong) và chân AREF, có thể làm hỏng bộ vi điều khiển trên bảng Arduino của bạn.

Ngoài ra, bạn có thể kết nối điện áp tham chiếu bên ngoài với chân AREF thông qua điện trở 5K, cho phép bạn chuyển đổi giữa điện áp tham chiếu bên ngoài và bên trong.

Lưu ý rằng điện trở sẽ thay đổi điện áp được sử dụng làm tham chiếu vì có một điện trở 32K bên trong trên chân AREF. Hai hoạt động như một bộ chia điện áp. Ví dụ, 2,5V được cấp qua điện trở sẽ mang lại 2,5 * 32 / (32 + 5) = ~ 2,2V tại chân AREF.

Thí dụ

int analogPin = 3;// potentiometer wiper (middle terminal) connected to analog pin 3 
int val = 0; // variable to store the read value

void setup() {
   Serial.begin(9600); // setup serial
   analogReference(EXTERNAL); // the voltage applied to the AREF pin (0 to 5V only) 
      // is used as the reference.
}

void loop() {
   val = analogRead(analogPin); // read the input pin
   Serial.println(val); // debug value
}

Arduino – Chức năng ký tự

Tất cả dữ liệu được nhập vào máy tính dưới dạng ký tự, bao gồm các chữ cái, chữ số và các ký hiệu đặc biệt khác nhau. Trong phần này, chúng ta thảo luận về các khả năng của C ++ để kiểm tra và thao tác các ký tự riêng lẻ.

Thư viện xử lý ký tự bao gồm một số chức năng thực hiện các kiểm tra và thao tác hữu ích đối với dữ liệu ký tự. Mỗi hàm nhận một ký tự, được biểu diễn dưới dạng int, hoặc EOF dưới dạng đối số. Các ký tự thường được thao tác dưới dạng số nguyên.

Hãy nhớ rằng EOF thường có giá trị –1 và một số kiến ​​trúc phần cứng không cho phép lưu trữ các giá trị âm trong các biến char. Do đó, các hàm xử lý ký tự thao tác các ký tự dưới dạng số nguyên. Bảng sau đây tóm tắt các chức năng của thư viện xử lý ký tự. Khi sử dụng các hàm từ thư viện xử lý ký tự, hãy bao gồm tiêu đề <cctype> .

Không.Nguyên mẫu & Mô tả
1int isdigit (int c) Trả về 1 nếu c là một chữ số và 0 nếu ngược lại.
2int isalpha (int c) Trả về 1 nếu c là một chữ cái và 0 nếu ngược lại.
3int isalnum (int c) Trả về 1 nếu c là một chữ số hoặc một chữ cái và 0 nếu ngược lại.
4int isxdigit (int c) Trả về 1 nếu c là ký tự chữ số thập lục phân và 0 nếu ngược lại. (Xem Phụ lục D, Hệ thống số, để có giải thích chi tiết về các số nhị phân, bát phân, thập phân và thập lục phân.)
5int islower (int c) Trả về 1 nếu c là chữ thường và 0 nếu ngược lại.
6int isupper (int c) Trả về 1 nếu c là một chữ cái viết hoa; 0 nếu không.
7int isspace (int c) Trả về 1 nếu c là ký tự khoảng trắng — dòng mới (‘\ n’), dấu cách (”), nguồn cấp dữ liệu biểu mẫu (‘\ f’), dấu xuống dòng (‘\ r’), tab ngang (‘\ t’) hoặc tab dọc (‘\ v’) – và 0 nếu không.
số 8int iscntrl (int c) Trả về 1 nếu c là ký tự điều khiển, chẳng hạn như dòng mới (‘\ n’), nguồn cấp dữ liệu biểu mẫu (‘\ f’), dấu xuống dòng (‘\ r’), tab ngang (‘\ t’), tab dọc (‘ \ v ‘), alert (‘ \ a ‘) hoặc backspace (‘ \ b ‘) – và 0 nếu không.
9int ispunct (int c) Trả về 1 nếu c là ký tự in khác với khoảng trắng, chữ số hoặc chữ cái và 0 nếu ngược lại.
10int sprint (int c) Trả về 1 nếu c là ký tự in bao gồm khoảng trắng (”) và 0 nếu ngược lại.
11int isgraph (int c) Trả về 1 nếu c là ký tự in khác với khoảng trắng (”) và 0 nếu ngược lại.

Các ví dụ

Ví dụ sau minh họa việc sử dụng các hàm isdigit, isalpha, isalnum và isxdigit . Hàm isdigit xác định xem đối số của nó có phải là chữ số (0-9) hay không. Hàm isalpha xác định xem đối số của nó là chữ hoa (AZ) hay chữ thường (a – z). Hàm isalnum xác định xem đối số của nó là chữ hoa, chữ thường hay chữ số. Hàm isxdigit xác định xem đối số của nó có phải là chữ số thập lục phân hay không (A – F, a – f, 0–9).

ví dụ 1

void setup () {
   Serial.begin (9600);
   Serial.print ("According to isdigit:\r");
   Serial.print (isdigit( '8' ) ? "8 is a": "8 is not a");
   Serial.print (" digit\r" );
   Serial.print (isdigit( '8' ) ?"# is a": "# is not a") ;
   Serial.print (" digit\r");
   Serial.print ("\rAccording to isalpha:\r" );
   Serial.print (isalpha('A' ) ?"A is a": "A is not a");
   Serial.print (" letter\r");
   Serial.print (isalpha('A' ) ?"b is a": "b is not a");
   Serial.print (" letter\r");
   Serial.print (isalpha('A') ?"& is a": "& is not a");
   Serial.print (" letter\r");
   Serial.print (isalpha( 'A' ) ?"4 is a":"4 is not a");
   Serial.print (" letter\r");
   Serial.print ("\rAccording to isalnum:\r");
   Serial.print (isalnum( 'A' ) ?"A is a" : "A is not a" );

   Serial.print (" digit or a letter\r" );
   Serial.print (isalnum( '8' ) ?"8 is a" : "8 is not a" ) ;
   Serial.print (" digit or a letter\r");
   Serial.print (isalnum( '#' ) ?"# is a" : "# is not a" );
   Serial.print (" digit or a letter\r");
   Serial.print ("\rAccording to isxdigit:\r");
   Serial.print (isxdigit( 'F' ) ?"F is a" : "F is not a" );
   Serial.print (" hexadecimal digit\r" );
   Serial.print (isxdigit( 'J' ) ?"J is a" : "J is not a" ) ;
   Serial.print (" hexadecimal digit\r" );
   Serial.print (isxdigit( '7' ) ?"7 is a" : "7 is not a" ) ;

   Serial.print (" hexadecimal digit\r" );
   Serial.print (isxdigit( '$' ) ? "$ is a" : "$ is not a" );
   Serial.print (" hexadecimal digit\r" );
   Serial.print (isxdigit( 'f' ) ? “f is a" : "f is not a");
   
}

void loop () {

}

Kết quả


According to isdigit:
8 is a digit
# is not a digit
According to isalpha:
A is a letter
b is a letter
& is not a letter
4 is not a letter
According to isalnum:
A is a digit or a letter

8 is a digit or a letter
# is not a digit or a letter
According to isxdigit:
F is a hexadecimal digit
J is not a hexadecimal digit
7 is a hexadecimal digit

$ is not a hexadecimal digit
f is a hexadecimal digit

Chúng tôi sử dụng toán tử điều kiện, với mỗi hàm để xác định xem chuỗi “là a” hay chuỗi “không phải là” nên được in trong đầu ra cho mỗi ký tự được kiểm tra. Ví dụ: dòng a chỉ ra rằng nếu ‘8’ là một chữ số – tức là nếu isdigit trả về một giá trị true (nonzero) – thì chuỗi “8 là a” được in. Nếu ‘8’ không phải là một chữ số (tức là, nếu isdigit trả về 0), chuỗi “8 không phải là” được in.

Ví dụ 2

Ví dụ sau minh họa việc sử dụng các hàm islower và isupper . Hàm islower xác định xem đối số của nó có phải là chữ thường (a – z) hay không. Hàm isupper xác định xem đối số của nó có phải là một chữ cái viết hoa (A – Z) hay không.

int thisChar = 0xA0;

void setup () {
   Serial.begin (9600);
   Serial.print ("According to islower:\r") ;
   Serial.print (islower( 'p' ) ? "p is a" : "p is not a" );
   Serial.print ( " lowercase letter\r" );
   Serial.print ( islower( 'P') ? "P is a" : "P is not a") ;
   Serial.print ("lowercase letter\r");
   Serial.print (islower( '5' ) ? "5 is a" : "5 is not a" );
   Serial.print ( " lowercase letter\r" );
   Serial.print ( islower( '!' )? "! is a" : "! is not a") ;
   Serial.print ("lowercase letter\r");

   Serial.print ("\rAccording to isupper:\r") ;
   Serial.print (isupper ( 'D' ) ? "D is a" : "D is not an" );
   Serial.print ( " uppercase letter\r" );
   Serial.print ( isupper ( 'd' )? "d is a" : "d is not an") ;
   Serial.print ( " uppercase letter\r" );
   Serial.print (isupper ( '8' ) ? "8 is a" : "8 is not an" );
   Serial.print ( " uppercase letter\r" );
   Serial.print ( islower( '$' )? "$ is a" : "$ is not an") ;
   Serial.print ("uppercase letter\r ");
}

void setup () {

}

Kết quả

According to islower:
p is a lowercase letter
P is not a lowercase letter
5 is not a lowercase letter
! is not a lowercase letter

According to isupper:
D is an uppercase letter
d is not an uppercase letter
8 is not an uppercase letter
$ is not an uppercase letter

Ví dụ 3

Ví dụ sau minh họa việc sử dụng các hàm isspace, iscntrl, ispunct, isprint và isgraph .

  • Hàm isspace xác định xem đối số của nó có phải là ký tự khoảng trắng hay không, chẳng hạn như dấu cách (”), nguồn cấp dữ liệu biểu mẫu (‘\ f’), dòng mới (‘\ n’), ký tự xuống dòng (‘\ r’), tab ngang (‘\ t’) hoặc tab dọc (‘\ v’).
  • Hàm iscntrl xác định xem đối số của nó có phải là một ký tự điều khiển hay không, chẳng hạn như tab ngang (‘\ t’), tab dọc (‘\ v’), nguồn cấp dữ liệu biểu mẫu (‘\ f’), alert (‘\ a’), backspace ( ‘\ b’), ký tự xuống dòng (‘\ r’) hoặc dòng mới (‘\ n’).
  • Hàm ispunctuation xác định xem đối số của nó có phải là một ký tự in không phải là dấu cách, chữ số hoặc chữ cái, chẳng hạn như $, #, (,), [,], {,},;,: hoặc% hay không.
  • Hàm isprint xác định xem đối số của nó có phải là một ký tự có thể được hiển thị trên màn hình hay không (bao gồm cả ký tự khoảng trắng ).

Hàm isgraph kiểm tra các ký tự giống như isprint, nhưng ký tự khoảng trắng không được bao gồm.

void setup () {
   Serial.begin (9600);
   Serial.print ( " According to isspace:\rNewline ") ;
   Serial.print (isspace( '\n' )? " is a" : " is not a" );
   Serial.print ( " whitespace character\rHorizontal tab") ;
   Serial.print (isspace( '\t' )? " is a" : " is not a" );
   Serial.print ( " whitespace character\n") ;
   Serial.print (isspace('%')? " % is a" : " % is not a" );
   
   Serial.print ( " \rAccording to iscntrl:\rNewline") ;
   Serial.print ( iscntrl( '\n' )?"is a" : " is not a" ) ;
   Serial.print (" control character\r");
   Serial.print (iscntrl( '$' ) ? " $ is a" : " $ is not a" );
   Serial.print (" control character\r");
   Serial.print ("\rAccording to ispunct:\r");
   Serial.print (ispunct(';' ) ?"; is a" : "; is not a" ) ;
   Serial.print (" punctuation character\r");
   Serial.print (ispunct('Y' ) ?"Y is a" : "Y is not a" ) ;
   Serial.print ("punctuation character\r");
   Serial.print (ispunct('#' ) ?"# is a" : "# is not a" ) ;
   Serial.print ("punctuation character\r");

   Serial.print ( "\r According to isprint:\r");
   Serial.print (isprint('$' ) ?"$ is a" : "$ is not a" );
   Serial.print (" printing character\rAlert ");
   Serial.print (isprint('\a' ) ?" is a" : " is not a" );
   Serial.print (" printing character\rSpace ");
   Serial.print (isprint(' ' ) ?" is a" : " is not a" );
   Serial.print (" printing character\r");
   
   Serial.print ("\r According to isgraph:\r");
   Serial.print (isgraph ('Q' ) ?"Q is a" : "Q is not a" );
   Serial.print ("printing character other than a space\rSpace ");
   Serial.print (isgraph (' ') ?" is a" : " is not a" );
   Serial.print ("printing character other than a space ");
}

void loop () {

}

Kết quả

According to isspace:
Newline is a whitespace character
Horizontal tab is a whitespace character
% is not a whitespace character
According to iscntrl:
Newline is a control character
$ is not a control character
According to ispunct:
; is a punctuation character
Y is not a punctuation character
# is a punctuation character
According to isprint:
$ is a printing character
Alert is not a printing character
Space is a printing character
According to isgraph:
Q is a printing character other than a space
Space is not a printing character other than a space

Arduino – Thư viện Toán học xem thêm

Trả lời