TIMER VE LCD DENEYİ
KODU:
#include <TimerOne.h>//Timer ı kullanmak için bu kütüphaneyi projemize ekliyoruz
#include <LiquidCrystal.h>//LCD yi kullanmak için bu kütüphaneyi projemize ekliyoruz
LiquidCrystal lcd(12,11,5,4,3,2);//LCD için pinleri belirliyoruz
const int temperaturePin = 0; //temperature sensorü A0a bağlıyoruz
void setup()
{
lcd.begin(16, 2);
lcd.clear();
lcd.print("hello, world!");//LCD ye ilk basılan değer
Timer1.initialize(8000000); // Timer ın lengthi 800000 microseconds (or 0.1 sec - or 10Hz => printa() da yaptığımız olayı 800000 microseconds da bir tekrarlıyacak
Timer1.attachInterrupt( printa ); //Timer a pinta() methodunu attach ediyoruz
}
void loop()
{
}
void printa(){//Bu methodu timer a yazdığınız değer sürede tekrarlarız
lcd.setCursor(0,1);
float voltage, degreesC, degreesF;
voltage = getVoltage(temperaturePin);//temperaturePin den okuduğumuz değeri LCD ye yazmak //için temperature ın değerini alıyoruz
degreesC = (voltage - 0.5) * 100.0; //temperature ın değerini C' olarak LCD ye bas
degreesF = degreesC * (9.0/5.0) + 32.0;
lcd.print(degreesC);
}
float getVoltage(int pin)
{
return (analogRead(pin) * 0.004882814);
}
BUZZER DENEYİ
KODU:
int sensorPin = 0;
int button1Pin = 2;
int button2Pin = 3;
const int buzzerPin = 9;
const int songLength = 18;
char notes[] = "cdfda ag cdfdg gf ";
int beats[] = {1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2};
int tempo;
int count = 0;
char notes_2[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b' };
void setup() {
pinMode(button1Pin, INPUT);
pinMode(button2Pin, INPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int button1State, button2State;
tempo = analogRead(sensorPin)/4;
button1State = digitalRead(button1Pin);
button2State = digitalRead(button2Pin);
if(button1State == LOW)
{
tone(buzzerPin, frequency(notes_2[count]), 100);
count++;
count %= 7;
delay(500);
}
else if(button2State == LOW )
{
play_song();
delay(100);
}
Serial.println(analogRead(sensorPin));
}
void play_song()
{
int i, duration;
for (i = 0; i < songLength; i++) // step through the song arrays
{
duration = beats[i] * tempo; // length of note/rest in ms
if (notes[i] == ' ') // is this a rest?
{
delay(duration); // then pause for a moment
}
else // otherwise, play the note
{
tone(buzzerPin, frequency(notes[i]), duration);
delay(duration); // wait for tone to finish
}
delay(tempo/10); // brief pause between notes
}
}
int frequency(char note)
{
// This function takes a note character (a-g), and returns the
// corresponding frequency in Hz for the tone() function.
int i;
const int numNotes = 8; // number of notes we're storing
// For the "char" (character) type, we put single characters
// in single quotes.
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};
// Now we'll search through the letters in the array, and if
// we find it, we'll return the frequency for that note.
for (i = 0; i < numNotes; i++) // Step through the notes
{
if (names[i] == note) // Is this the one?
{
return(frequencies[i]); // Yes! Return the frequency
}
}
return(0); // We looked through everything and didn't find it,
// but we still need to return a value, so return 0.
}
TEMPERATURE VE PHOTORESİSTER İLE RGB LED KONTROLÜ
KODU:
const int RED_PIN = 9;//RGB ledin pinlerini set ediyoruz
const int GREEN_PIN = 10;
const int BLUE_PIN = 11;//RGB led 9, 10, 11. Pinleri kullanıyor output göndermek için
const int sensorPin = 0;//Photoresister ü A0 a bağladık
const int sensorPin1= 1;//Temperature sensör ü A1 e bağladık
int lightLevel, high = 0, low = 1023;//
void setup()
{
pinMode(RED_PIN, OUTPUT);//RGB ledi output olarak atadık
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
Serial.begin(9600);
}
void loop()
{
mainColors();// Bir döngü içinde süreki bu method çağırılacak
}
void mainColors()
{
float voltage, C;//Temperature sensorden aldığımız değerleri tutmak için değişkenler tutuk
voltage = getVoltage(sensorPin1);//Temperature sensörün değerini getVotage() methoduyla okuyoruz
lightLevel = analogRead(sensorPin);// Photoresistorün değerini okuyoruz
manualTune();
C = (voltage - 0.5) * 100.0;//Temperature sensörden adıgımız değeri C' ye çeviryoruz
if(C<=0){//Eğer Temperature sensörün çevirdiğimiz değeri 0 sa bu if koşulunu yapacağızz
analogWrite(BLUE_PIN, lightLevel);//Blue rengin parlaklığını photo resistorden aldığımız değer kadar yapıyoruz
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);//ve sadece RGB ledin mavi rengini aktif yapıyoruz
delay(lightLevel); //Işık şiddeti kadar bekledikten sonra RGB ledi Pinleri LOW yaparak söndürüyoruz
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(lightLevel);
}
if(0<C && C<1){// Temperature sensörün değeri 0-1 aralığındaysa bu koşolu yapacak program
analogWrite(GREEN_PIN, lightLevel);//Green rengin parlaklığını photo resistorden aldığımız değer kadar yapıyoruz
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);//ve sadece RGB ledin yeşil rengini aktif yapıyoruz
digitalWrite(BLUE_PIN, LOW);//Diğer renkleri LOW yaparak söndürüyoruz sadece yeşil yanması için
delay(lightLevel); //Işık şiddeti kadar bekledikten sonra RGB ledi Pinleri LOW yaparak söndürüyoruz
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(lightLevel); //Işık şiddeti kadar bekledikten sonra RGB ledi Pinleri LOW yaparak söndürüyoruz
}
if(C>=2){ // Temperature sensörün değeri 2 den büyükse bu koşolu yapacak program
analogWrite(RED_PIN, lightLevel);//RED rengin parlaklığını photo resistorden aldığımız değer kadar yapıyoruz
digitalWrite(RED_PIN, HIGH); //ve sadece RGB ledin RED rengini aktif yapıyoruz
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(lightLevel); //Işık şiddeti kadar bekledikten sonra RGB ledi Pinleri LOW yaparak söndürüyoruz
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(lightLevel);
}
Serial.print(C);//Serial dan C değerini yazıp doğrumu ölçtük diye bakıyoruz
Serial.println();
}
void manualTune()
{
lightLevel = map(lightLevel, 500, 800, 0, 255);
lightLevel = constrain(lightLevel, 0, 255);
}
float getVoltage(int pin)
{
// BU FONKSİYONUN 1 PARAMETRESİ VAR ,ODA ANALOG PİN NUMARASI
// BU PİNİ OKUMAK İÇİN BU PARAMETREYİ KULLANACAĞIZ. You might notice that this function does not have
// BU METHOD VOİD DEĞİL ÇÜNKÜ floating NUMBER DÖNDERECEK
// point DEĞERİ, DOĞRU VOLTAGE DEĞERİ (0 to 5V).
return (analogRead(pin) * 0.004882814);
// BU EŞİTLİK analogRead() DEN ALINAN 0 to 1023 DEĞERİNİ ÇEVİRMEMİZİ SAĞLIYOR
// returns, 0.0 DAN 5.0 E KADAR DOĞRU VOLTAGE OKUMAMIZ İÇİN
// PİNDEN DOĞRU DEĞER OKUMAK İÇİN
}