Multi-function Shield XD-203 с кнопками, зуммером, потенциометром и индикатром представляет многофункциональную плату расширения, выполненную в виде шилда для установки на Arduino Uno, Mega и подобные им по размерам платы.
		
			
			
			
			
				
					
			
		
		
			
			
			
			
				
					
			
		
		
			
			
			
			
				
					
			
		
		
			
			
			
			
				
					
			
		
		
			
			
			
			
				
					
			
		
		
			
			
			
			
				
					
			
		
		
			
			
			
			
				
					
			
		
			Примеры
1. Мигание одного светодиода
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  | 
						/* XD-203   Пример 1 */ 	int led = 13; 	void setup() 	{ 	  pinMode(led, OUTPUT); 	} 	void loop() 	{ 	  digitalWrite(led, HIGH); 	  delay(1000); 	  digitalWrite(led, LOW); 	  delay(1000); 	}  | 
					
2. Мигание всех светодиодов
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29  | 
						/* XD-203   Пример 2 */ 	int led1 = 13; 	int led2 = 12; 	int led3 = 11; 	int led4 = 10; 	void setup() 	{ 	  pinMode(led1, OUTPUT); 	  pinMode(led2, OUTPUT); 	  pinMode(led3, OUTPUT); 	  pinMode(led4, OUTPUT); 	} 	void loop() 	{ 	  digitalWrite(led1, HIGH); 	  digitalWrite(led2, HIGH); 	  digitalWrite(led3, HIGH); 	  digitalWrite(led4, HIGH); 	  delay(1000); 	  digitalWrite(led1, LOW); 	  digitalWrite(led2, LOW); 	  digitalWrite(led3, LOW); 	  digitalWrite(led4, LOW); 	  delay(1000); 	}  | 
					
3. Кнопки
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34  | 
						/* XD-203   Пример 3 */ const byte LED[] = {13,12,11,10}; #define BUTTON1 A1 #define BUTTON2 A2 void setup() {   pinMode(LED[0], OUTPUT);   pinMode(LED[1], OUTPUT);   pinMode(LED[2], OUTPUT);   pinMode(LED[3], OUTPUT); } void loop() {   if(!digitalRead(BUTTON1))   {     digitalWrite(LED[0], HIGH);     digitalWrite(LED[1], HIGH);     digitalWrite(LED[2], HIGH);     digitalWrite(LED[3], HIGH);   }   if(!digitalRead(BUTTON2))   {     digitalWrite(LED[0], LOW);     digitalWrite(LED[1], LOW);     digitalWrite(LED[2], LOW);     digitalWrite(LED[3], LOW);   } }  | 
					
4. Подстроечный резистор
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  | 
						/* XD-203   Пример 4 */ #define Pot1 0 void setup() {   Serial.begin(9600); } void loop() {    Serial.print("Potentiometer reading: ");   Serial.println(analogRead(Pot1));   /* Ждем 0.5 с до повторного считывания */   delay(500); }  | 
					
5. Подстроечный резистор и светодиоды
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42  | 
						/* XD-203   Пример 5 */ const byte LED[] = {13,12,11,10}; #define Pot1 0 void setup() {   Serial.begin(9600);   pinMode(LED[0], OUTPUT);   pinMode(LED[1], OUTPUT);   pinMode(LED[2], OUTPUT);   pinMode(LED[3], OUTPUT); } void loop() {   int PotValue;   PotValue = analogRead(Pot1);   /* Ждем 0.5 с до повторного считывания */   // если значение меньше 400, светодиоды выкл   if(PotValue < 400)   {     digitalWrite(LED[0], LOW);     digitalWrite(LED[1], LOW);     digitalWrite(LED[2], LOW);     digitalWrite(LED[3], LOW);     Serial.print("Potentiometer: ");     Serial.println(PotValue);   }   // иначе вкл   else   {     digitalWrite(LED[0], HIGH);     digitalWrite(LED[1], HIGH);     digitalWrite(LED[2], HIGH);     digitalWrite(LED[3], HIGH);     Serial.print("Potentiometer: ");     Serial.println(PotValue);   }   delay(500); }  | 
					
6. Индикатор
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38  | 
						/* XD-203   Пример 6 */ /* Регистры для индикатора */ #define LATCH_DIO 4 #define CLK_DIO 7 #define DATA_DIO 8 /* для чисел от 0 до 9 */ const byte SEGMENT_MAP[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90}; /* для выбора разряда от 1 до 4 */ const byte SEGMENT_SELECT[] = {0xF1,0xF2,0xF4,0xF8}; void setup () {   /* DIO пины на вывод */   pinMode(LATCH_DIO,OUTPUT);   pinMode(CLK_DIO,OUTPUT);   pinMode(DATA_DIO,OUTPUT); } void loop() {    /* Обновляем индикатор с актуальными значениями */   WriteNumberToSegment(0 , 1);   WriteNumberToSegment(1 , 4);   WriteNumberToSegment(2 , 8);   WriteNumberToSegment(3 , 8); } /* Функция: целое число (0…9) для каждого разряда (1–4) */ void WriteNumberToSegment(byte Segment, byte Value) {   digitalWrite(LATCH_DIO,LOW);   shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);   shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );   digitalWrite(LATCH_DIO,HIGH); }  | 
					
7. Значение потенциометра (АЦП) на индикаторе
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41  | 
						/* XD-203   Пример 7 */ /* Регистры для индикатора */ #define LATCH_DIO 4 #define CLK_DIO 7 #define DATA_DIO 8 // потенциометр А0 #define Pot1 0 /* для чисел от 0 до 9 */ const byte SEGMENT_MAP[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90}; /* для выбора разряда от 1 до 4 */ const byte SEGMENT_SELECT[] = {0xF1,0xF2,0xF4,0xF8}; void setup () {   pinMode(LATCH_DIO,OUTPUT);   pinMode(CLK_DIO,OUTPUT);   pinMode(DATA_DIO,OUTPUT); } void loop() {   int PotValue;   PotValue = analogRead(Pot1);   /* Обновляем индикатор с актуальными значениями */   WriteNumberToSegment(0 , PotValue / 1000);   WriteNumberToSegment(1 , (PotValue / 100) % 10);   WriteNumberToSegment(2 , (PotValue / 10) % 10);   WriteNumberToSegment(3 , PotValue % 10); } /* Функция: целое число (0…9) для каждого разряда (1–4) */ void WriteNumberToSegment(byte Segment, byte Value) {   digitalWrite(LATCH_DIO,LOW);   shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);   shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );   digitalWrite(LATCH_DIO,HIGH); }  | 
					









