Arduino Multifunction Shield

0
396

 

Bu incelememizde sizlere arduino için yapılmış olan Multifunction Shield’ı inceleyeceğiz . Bu shield de yeni başlayanlar için gerekli birçok parça mevcut.

Shield’in Üzerindeki Girişler

1- 3 Adet Buton

2- Buzzer

3- Potansiyometre

4- APC220 , Bluetooth veya Ses tanıma modülü nü kolayca yerleştirmenize yarayan pin girişi

5- 4lü Segment led

6- Başka parça bağlamak istersek diye 5,6,9 ve A5 modülü boş bırakılmış

7- 13,12,11,10 Numaralı pinlere bağlı 4 adet led

Shield’i Kullanmaya Başlamak İçin Hazır Kodlar 

1- Blink

Bu kod 13 numaralı ledi (shielddeki en üstteki ledi) yakıp söndürür.

int led = 13;

void setup()
{
pinMode(led, OUTPUT);
}

void loop()
{
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}

blinkgif

 

2- All Leds Blinking

Bu kod bütün ledleri yakıp söndürür.

int led1 = 13;
int led2 = 12;
int led3 = 11;
int led4 = 10;

void setup()
{
// initialize the digital pin as an output.
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);
}

alledsblink

3-Switches Expamle

A1 etiketli et ledleri söndürür A2 etiketli led yakar.

const byte LED[] = {13,12,11,10};

#define BUTTON1 A1
#define BUTTON2 A2

void setup()
{
// initialize the digital pin as an output.
/* Set each pin to outputs */
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);
}
}

switch

4-Potentiometer 1

Potansiyometreden aldığı veriyi serial ile bilgisayara gönderir

#define Pot1 0

void setup()
{
Serial.begin(9600);
}

/* Main Program */
void loop()
{
Serial.println(analogRead(Pot1));
/* Wait 0.5 seconds before reading again */
delay(500);
}

pot

5-Pot and led

Potansiyometreden aldığı veri 400 ten küçükse ledleri söndürür büyükse yakar

const byte LED[] = {13,12,11,10};
#define Pot1 0

void setup()
{
Serial.begin(9600);
// initialize the digital pin as an output.
/* Set each pin to outputs */
pinMode(LED[0], OUTPUT);
pinMode(LED[1], OUTPUT);
pinMode(LED[2], OUTPUT);
pinMode(LED[3], OUTPUT);
}

/* Main Program */
void loop()
{
int PotValue;
//Serial.print(“Potentiometer reading: “);
PotValue = analogRead(Pot1);
/* Wait 0.5 seconds before reading again */
if(PotValue < 400)
{
digitalWrite(LED[0], LOW);
digitalWrite(LED[1], LOW);
digitalWrite(LED[2], LOW);
digitalWrite(LED[3], LOW);
Serial.println(PotValue);
}
else
{
digitalWrite(LED[0], HIGH);
digitalWrite(LED[1], HIGH);
digitalWrite(LED[2], HIGH);
digitalWrite(LED[3], HIGH);
Serial.println(PotValue);
}
delay(500);
}

potled

6-Segment Display

Segment ledlerde sayı göstermeye yarar (0123 olarak ayarlıdır değiştirebilirsiniz)

/* Define shift register pins used for seven segment display */
#define LATCH_DIO 4
#define CLK_DIO 7
#define DATA_DIO 8

/* Segment byte maps for numbers 0 to 9 */
const byte SEGMENT_MAP[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};
/* Byte maps to select digit 1 to 4 */
const byte SEGMENT_SELECT[] = {0xF1,0xF2,0xF4,0xF8};

void setup ()
{
/* Set DIO pins to outputs */
pinMode(LATCH_DIO,OUTPUT);
pinMode(CLK_DIO,OUTPUT);
pinMode(DATA_DIO,OUTPUT);
}

/* Main program */
void loop()
{

/* Update the display with the current counter value */
WriteNumberToSegment(0 , 0);
WriteNumberToSegment(1 , 1);
WriteNumberToSegment(2 , 2);
WriteNumberToSegment(3 , 3);
}

/* Write a decimal number between 0 and 9 to one of the 4 digits of the display */
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);
}

0123

7-Read Pot and Show Value On Display

Potansiyometreden aldığı veriyi segment ledlerde gösterir

/* Define shift register pins used for seven segment display */
#define LATCH_DIO 4
#define CLK_DIO 7
#define DATA_DIO 8

#define Pot1 0

/* Segment byte maps for numbers 0 to 9 */
const byte SEGMENT_MAP[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};
/* Byte maps to select digit 1 to 4 */
const byte SEGMENT_SELECT[] = {0xF1,0xF2,0xF4,0xF8};

void setup ()
{
Serial.begin(9600);
/* Set DIO pins to outputs */
pinMode(LATCH_DIO,OUTPUT);
pinMode(CLK_DIO,OUTPUT);
pinMode(DATA_DIO,OUTPUT);
}

/* Main program */
void loop()
{
int PotValue;
PotValue = analogRead(Pot1);
Serial.print(“Potentiometer: “);
Serial.println(PotValue);
/* Update the display with the current counter value */
WriteNumberToSegment(0 , PotValue / 1000);
WriteNumberToSegment(1 , (PotValue / 100) % 10);
WriteNumberToSegment(2 , (PotValue / 10) % 10);
WriteNumberToSegment(3 , PotValue % 10);
}

/* Write a decimal number between 0 and 9 to one of the 4 digits of the display */
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);
}

potsegment

8-Led 2

Yürüyen ışık (Halk arasında Karaşimşek) Kodu

/* FILE:    ARD_Multifunction_Shield_LED_Example
DATE:    28/05/14
VERSION: 0.1

REVISIONS:

28/05/14 Created version 0.1

This is an example of how to use the 4 LED’s on the Hobby Components Arduino
compatible Multi Function experimenter shield (HCARDU0085).

This example sketch will repeatedly turn each LED on in sequence to create a ‘cylon’
effect.

You may copy, alter and reuse this code in any way you like, but please leave
reference to HobbyComponents.com in your comments if you redistribute this code.
This software may not be used for the purpose of promoting or selling products
that directly compete with Hobby Components Ltd’s own range of products.

THIS SOFTWARE IS PROVIDED “AS IS”. HOBBY COMPONENTS MAKES NO WARRANTIES, WHETHER
EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ACCURACY OR LACK OF NEGLIGENCE.
HOBBY COMPONENTS SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR ANY DAMAGES,
INCLUDING, BUT NOT LIMITED TO, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY
REASON WHATSOEVER.
*/

/* Define the DIO pin numbers for each LED */
const byte LED[] = {13,12,11,10};

void setup()
{
/* Set each pin to outputs */
pinMode(LED[0], OUTPUT);
pinMode(LED[1], OUTPUT);
pinMode(LED[2], OUTPUT);
pinMode(LED[3], OUTPUT);
}

/* Main program */
void loop()
{
byte Index;

/* Step through each LED and turn it on in sequence */
for(Index = 0; Index <= 3; Index++)
{
/* First turn all the LED’s off */
digitalWrite(LED[0], HIGH);
digitalWrite(LED[1], HIGH);
digitalWrite(LED[2], HIGH);
digitalWrite(LED[3], HIGH);
/* Then turn the next LED ON */
digitalWrite(LED[Index], LOW);
/* Wait a little between each sequence */
delay(100);
}

/* Do the same thing but in reverse order */
for(Index = 3; Index > 0; Index–)
{
/* First turn all the LED’s off */
digitalWrite(LED[0], HIGH);
digitalWrite(LED[1], HIGH);
digitalWrite(LED[2], HIGH);
digitalWrite(LED[3], HIGH);
/* Then turn the next LED ON */
digitalWrite(LED[Index], LOW);
/* Wait a little between each sequence */
delay(100);
}
}

 

9-Segment Sayım

Her ms 1 değer artarak sayıyı segment ledlerde gösterir

/* FILE:    ARD_Multifunction_Shield_Seven_Segment_Example
DATE:    28/05/14
VERSION: 0.1

REVISIONS:

28/05/14 Created version 0.1

This is an example of how to use the 4 digit seven segment display on the Hobby
Components Arduino compatible Multi Function experimenter shield (HCARDU0085).

This example sketch will display a decimal number on the seven segment LED display
which will increment by one wever 100ms.

You may copy, alter and reuse this code in any way you like, but please leave
reference to HobbyComponents.com in your comments if you redistribute this code.
This software may not be used for the purpose of promoting or selling products
that directly compete with Hobby Components Ltd’s own range of products.

THIS SOFTWARE IS PROVIDED “AS IS”. HOBBY COMPONENTS MAKES NO WARRANTIES, WHETHER
EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ACCURACY OR LACK OF NEGLIGENCE.
HOBBY COMPONENTS SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR ANY DAMAGES,
INCLUDING, BUT NOT LIMITED TO, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY
REASON WHATSOEVER.
*/

/* Define shift register pins used for seven segment display */
#define LATCH_DIO 4
#define CLK_DIO 7
#define DATA_DIO 8

/* Segment byte maps for numbers 0 to 9 */
const byte SEGMENT_MAP[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};
/* Byte maps to select digit 1 to 4 */
const byte SEGMENT_SELECT[] = {0xF1,0xF2,0xF4,0xF8};

unsigned long Cur_ms_Count; // Stores the current time in ms
unsigned long Last_ms_Count; // Stores the last time in ms the counter was last updated
int Count; // Stores the value that will be displayed

void setup ()
{
/* Set DIO pins to outputs */
pinMode(LATCH_DIO,OUTPUT);
pinMode(CLK_DIO,OUTPUT);
pinMode(DATA_DIO,OUTPUT);

/* Initiliase the registers used to store the crrent time and count */
Cur_ms_Count = millis();
Last_ms_Count = 0;
Count = 0;
}

/* Main program */
void loop()
{

/* Get how much time has passed in milliseconds */
Cur_ms_Count = millis();

/* If 100ms has passed then add one to the counter */
if(Cur_ms_Count – Last_ms_Count > 100)
{

Last_ms_Count = Cur_ms_Count;

if(Count < 9999)
{
Count++;
} else
{
Count = 0;
}
}

/* Update the display with the current counter value */
WriteNumber(Count);
}

/* Write a decimal number between 0 and 9999 to the display */
void WriteNumber(int Number)
{
WriteNumberToSegment(0 , Number / 1000);
WriteNumberToSegment(1 , (Number / 100) % 10);
WriteNumberToSegment(2 , (Number / 10) % 10);
WriteNumberToSegment(3 , Number % 10);
}

/* Wite a ecimal number between 0 and 9 to one of the 4 digits of the display */
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);
}

 

Kaynaklar
arduinolearning.com
hobbycomponents.com