avatar_kotan04

arduino gosub

Başlatan kotan04, 08 Mart 2017, 09:28:21

fatih88

Basıc esasında güzel dil ama bazı eksikleri var 32 bir değişken yok float değişken yok grafik lcd destek yok ama komut fonksiyonu çok Yazılım daha kolay yazılıyor c esasındadaha zor ama basıc de yaptığının aynısını c de yazınca tepkiler daha hızlı
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

kotan04

programda 2 adet LED ile sürekli flip flop yaptırıyorum ve butonla'da flip flop hızını ayarlıyorum ayarladığım hızı'da eeproma kaydediyorum.
enerji geldiğinde kaldığı hızdan başlasın diye . senin yazdığın programı denedim değişken 2 ve hız değişkeni 100 den sonra 0 değerini alıyor
değişken 1 değer almıyor.

iyi çalışmalar.

fatih88

abi birde bunu dene çok bilmiyorum ardunio yu ama netten bakarak şöyle bir şey yaptım çalışıyor kydediyor
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

kotan04

#33
Merhaba ;

@fatih88  ilgin için çok teşekkür ederim.
son eklediğin dosyayı açtım denedim yaptığım programa entegre ettim.
program şimdi istediğim gibi çalışıyor .

kod olarak buraya ekledim istersen kullanırsın . ayrıca bendeki buton kontrol kodlarını incele bu tip uygulamalarda daha verimli bir yöntem erol hoca göstermişti butona bastığında döngüden çıkıp hız değişkenini arttırıyor elini çektiğinde program kaldığı yerden devam ediyor.
bu yöntem butonla arttırma yöntemi olarak bence güzel. diğer yöntemde program hız değişkeni arttıkça butonu kontrol etmede yavaşlıyor.




#include <EEPROM.h>
const int buton1 = 3; 
const int buton2 = 2;

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

int16_t hiz=0;        //16 bit hız değişkeni
uint8_t kayit1;        //hızı eproma kaydetmek için ilk değişken
uint8_t kayit2;        //hızı eproma kaydetmek için ikinci değişken

void setup()
{
delay (1000);

pinMode(led1,  OUTPUT);
pinMode(led2,  OUTPUT);
pinMode(led3,  OUTPUT);
pinMode(buton1, INPUT_PULLUP);
pinMode(buton2, INPUT_PULLUP);

kayit1=EEPROM.read(0);
kayit2=EEPROM.read(1); //eepromun 0. adresini ve1. adresini okuyoruz
if(kayit1==255)kayit1=1;
if(kayit2==255)kayit2=0;//burada eeproma hiç veri yazılmadıysa 255 döner biz 100ms yapacağımız için kayıt1=1 diyoruz kayıt2=0 yapıyoruz
hiz=kayit1*100+kayit2;  //epromu okuyup kayıtlı değerleri hız degerine 16 bit olarak kayrıt etmiş oluyoruz

}
void loop()
{
 
  while(1){

 
  digitalWrite(led1, HIGH);   //
  digitalWrite(led2, LOW);    //
  delay(hiz);
  kontrol();

  digitalWrite(led1, LOW);      //
  digitalWrite(led2, HIGH);     //
 

  delay(hiz); 
  kontrol();
          }
          }
  void kontrol()


           {
           while(digitalRead(buton1)==LOW)
           {
 
           hiz=hiz+10;
           save();
           delay(50);
           if(hiz>=3000) hiz=3000; 
           //
           }
           
         
           while(digitalRead(buton2)==LOW)
           {
           
           hiz=hiz-10;
           save();
           delay(50);
           if(hiz<=100) hiz=100;
           //
           }
           
           }

void save()
{
  kayit1=hiz/100;kayit2=hiz%100;
    EEPROM.write(0,kayit1);EEPROM.write(1,kayit2);
    return;
   
   
}



Powered by EzPortal