Académique Documents
Professionnel Documents
Culture Documents
1
#include <Servo.h> // enswmatwsh vivliothikis Servo
Servo servo; // dimiourgia enos stigmiotypoy servo
int servo_pos = 0; // metavliti gia apothikeush thesis toy servo motor
void setup()
{
servo.attach(9); // prosartisi toy servo motor sto pin 9
Serial.begin(57600); //ksekiname to termatiko gia na paroume odigies
Serial.println('Press v and n to rotate, b to center'); //typwnoume odigies, mono 1 fora
}
void loop()
{
if (Serial.available()!=0) // elegxoume an yparxei eisodos sti seiriaki
{
switch(Serial.read())
{
case 'v':
servo_pos = min(179, servo_pos + 5); // prosoxi min yperodigisoume to servo
servo.write(servo_pos);
break;
case 'n':
servo_pos = max(0, servo_pos 5); // prosoxi min yperodigisoume to servo
servo.write(servo_pos);
break;
case 'b':
servo_pos = 90;
servo.write(servo_pos); // kentrarisma
break;
}
}
}
2
) 5V=5000mV 1024 ,
*5000/1024 10mV
, *0.488 (,
).
) 3
global loop
( & ) update.
, ... ,
,
overflow .
) datasheets,
, :
,
arduino.
datasheets :
fritzing :
... ,
arduino Vout
oC. .
fritzing datasheets.
3
// pin 14 (DS, Serial Data Input) tou 74HC595 sto digital pin 16 (Analog pin 2) tou Arduino
int dataPin = 16;
// pin 11 (SH_CP, Shift Register Clock Input) tou 74HC595 -> digital pin 17 (Analog 3) tou Arduino
int clockPin = 17;
// pin 12 (ST_CP, Storage Register Clock Input) tou 74HC595 -> digital pin 18 (Analog 4) tou Arduino
int latchPin = 18;
// H anodos toy green LED 5mm sto digital pin 19 (Analog pin 5) tou Arduino
int LED_green = 19;
int LCD_RS_pin = 12; // LCD RS pin 4 sto Arduino digital pin 12
int LCD_E_pin = 11; // LCD Enable pin 6 sto Arduino digital pin 11
int LCD_D4_pin = 10; // LCD D4 pin 11 sto Arduino digital pin 10
int LCD_D5_pin = 8; // LCD D5 pin 12 sto Arduino digital pin 8
int LCD_D6_pin = 7; // LCD D6 pin 13 sto Arduino digital pin 7
int LCD_D7_pin = 4; // LCD D7 pin 14 sto Arduino digital pin 4
int LCD_LEDA_pin = 2; // LCD LEDA pin 15 sto Arduino digital pin 2 ('h st +5 Volt gia always on)
#include <LiquidCrystal.h> // xrhsh ths vivlithikis LiquidCrystal gia elegxo othonis LCD
LiquidCrystal lcd(LCD_RS_pin, LCD_E_pin, LCD_D4_pin, LCD_D5_pin, LCD_D6_pin,
LCD_D7_pin);
int counter; // metritis gia loop
int delay_time = 5000; // 5s gia na vgei o epomenos arithmos
int freqs[20]; // orismos pinaka syxnotitwn
void setup()
{
randomSeed(analogRead(0)); // arxikopoihsh gennitrias tixaiwn arithmwn
// rythmizoume ta pins san OUTPUT
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(LED_green, OUTPUT);
// arxikopoioume tin LCD
lcd.begin(16, 2); // orismos LCD me 16 sthles kai 2 grammes
pinMode(LCD_LEDA_pin, OUTPUT); // orismos digital pin 7 ws eksodos
digitalWrite(LCD_LEDA_pin, HIGH); // orismos katastashs pin D7 se HIGH gia fwtismo LCD
}
void loop()
{
for (int i=0;i<20;i++)
freqs[i]=0; // midenismos tou pinaka syxnotitwn
int max_freq=0; // arxikopoiisis megistis syxnotitas emfanisis
int max_freq_num=0; // arxikopoiisi arithmou pou antistoixei sti megisti syxnotita
int num; // i metavliti pou 8a fylaei ton tyxaio arithmo...
for (counter = 1; counter <= 60; counter = counter++)
{
num=random(1,21);
freqs[num-1]++; // ay3anoume ti syxnotita tou num kata 1...to "-1" sto deikti
// tou pinaka, ofeiletai sto oti o pinakas exei prwto stoixeio to [0] kai oxi to [1].
if (freqs[num-1]>max_freq) // elegxos synexws gia megisti syxnotita...
{max_freq=freqs[num-1]; max_freq_num=num;} // ... kai update
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, number_to_BCD(num) );
digitalWrite(latchPin, HIGH);
delay(delay_time);
}
lcd.print("Most_freq_num:");
// ektypwsi apotelesmatwn
lcd.print(max_freq_num, DEC);
lcd.setCursor(0,1);
lcd.print("Max_freq:");
lcd.print(max_freq, DEC);
delay(120000);
lcd.clear(); // ... vimata svisimatos tis o8onis kai toy backlight
lcd.noCursor();
digitalWrite(LCD_LEDA_pin, LOW); // ... kai ka8arisma twn 7segment
digitalWrite(latchPin, LOW); // ... na eimaste taktikoi, etsi?
shiftOut(dataPin, clockPin, MSBFIRST, 255 );
digitalWrite(latchPin, HIGH);
while (1==1) {} // ... ateleiwto loop
}
// synartisi metatropis dipsifiou arithmou se byte to opoio
// perilamvanei ta dyo psifia se morfi BCD
byte number_to_BCD(int number)
{
number = constrain(number, 0, 99);
int dig0 = number % 10;
int dig1 = (number / 10) % 10;
int mynumberl = dig0 & B00001111;
int mynumberh = dig1 << 4;
int finalnumber = mynumberh | mynumberl;
return finalnumber;
}
// synartisi gia energopoihsh prasinou LED
void upper_down_limit_reached(int delay_time)
{
digitalWrite(LED_green, HIGH); // energopoihsh LED_green
delay(delay_time); // kathisteri gia delay_time msec
digitalWrite(LED_green, LOW); // apenergopoihsh LED_green
}
4
,
. .
(
) .
, .
.
int
int
int
int
int
int
int
int
void setup()
{
// orismos tvn pin 3-6 san exodoi-den xreiazetai gia ta pwm pins
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
Serial.begin(57600);
}
void loop()
{
if (Serial.available() != 0)
{
key = Serial.read();
switch (keypressed) {
case 'q': // kinisi mprosta
moveForward();
break;
case 'a': // move backwards
moveBackwards();
break;
case 'z': // turn left
turnLeft();
break;
case 'x': // turn right
turnRight();
break;}
delay(1000); // ka8e kinisi krataei 1sec
analogWrite(enableMotor1,0); // meta tin kinisi stamatame kai tous 2 kinitires
analogWrite(enableMotor2,0);
}
}
// se oles tis routines kinisis, den ksexname oti prwta 8etoume ta
// control bit sto bridge chip kai meta kanoume enable ton kinitira
void moveForward()
{
// o syndyasmos poy kinei brosta i' pisw to ama3i, exei na kanei me to pws exei synde8ei o
kinitiras
// me tous troxous, mesw toy kivwtioy. Ypo8etoume oti o syndyasmos LH kinei brosta to
oxima kai o
// LH pisw...diaforetika prepei na alla3ete to prototype twn 2 synartisewn
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
analogWrite(enableMotor1,speed);
analogWrite(enableMotor2,speed);
}
void moveBackwards()
{
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
analogWrite(enableMotor1,speed);
analogWrite(enableMotor2,speed);
}
void turnLeft()
{
// kinoume deksiostrofa ton ena kinitira kai aristerostrofa ton allo
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
analogWrite(enableMotor1,speed);
analogWrite(enableMotor2,speed);
}
void turnRight()
{
// anapoda apo tin turnLeft()
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
analogWrite(enableMotor1,speed);
analogWrite(enableMotor2,speed);
}