Odpowiedz 
 
Ocena wątku:
  • 1 Głosów - 3 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino
SQ9MDD Offline
Rysiek
****

Liczba postów: 380
Dołączył: 01-02-2009
Post: #18
RE: Arduino
(01-07-2013 23:47)SP5FCS napisał(a):  Niestety ceny modułów nie są niskie (60...200) zł.

No więc tak...

Programator USBasp 17PLN (allegro)
Płytka prototypowa 20 PLN
Kabelki połączeniowe 15PLN za xx sztuk
Atmega 328 9PLN

To wystarczy by wystartować z arduino... jeśli w procesorze niema bootloadera w gui zanim klikniemy zaprogramuj wciskamy shift.

W ten sposób programowałem swoje kostki.

Poglądowo zapodaję programik do soft startu silników rotora. Chodzi o to by nie szarpać antenami, projekt zrobiłem w ramach nauki arduino, całość z zaprojektowaniem płytki i napisaniem programu zajęło mi jeden wieczór.
Program zakłada sterowanie prawo lewo góra dół dwoma silnikami, współdzielenie czasu tak by każdy kanał pracował "niezależnie", procesor attiny 2313.

Kod:
/**************************************************​****************
Program miękkiego startu silników rotora dla Piotra SP5MG
Copyleft SQ9MDD 2013
**************************************************​****************/

//==================================================​===============
//zmienne:
//wejscia i wyjścia
int we1 = 0;
int we2 = 1;
int we3 = 2;
int we4 = 3;
int we1_state = 0;
int we2_state = 0;
int we3_state = 0;
int we4_state = 0;
int live_led = 6;
int wy1 = 13;
int wy2 = 12;
int wy3 = 11;
int wy4 = 7;

//dodatkowe zmienne
int wy1_licznik = 0;
int wy2_licznik = 0;
int wy3_licznik = 0;
int wy4_licznik = 0;
int stan_live_led = 1;
unsigned long tempo_startu_silnika = 30; //odcinek czasu co jaki następuje dodanie wartości do PWM
unsigned long tempo_mrugania_diodki_pulse = 150;
unsigned long czas_do_ostatniej_zmiany_wysterowania_silnika = millis() + tempo_startu_silnika;
unsigned long czas_do_ostatniej_zmiany_wysterowania_diody = millis() + tempo_mrugania_diodki_pulse;

void setup(){
  pinMode(we1,INPUT);
  pinMode(we2,INPUT);
  pinMode(we3,INPUT);
  pinMode(we4,INPUT);
  pinMode(live_led,OUTPUT);
  pinMode(wy1,OUTPUT);
  pinMode(wy2,OUTPUT);
  pinMode(wy3,OUTPUT);
  pinMode(wy4,OUTPUT);
}

void loop(){
  unsigned long time = millis();
  if(time >= czas_do_ostatniej_zmiany_wysterowania_silnika){

    //kanał pierwszy we1 - >wy1
    we1_state = digitalRead(we1);
    if (we1_state == HIGH){
      analogWrite(wy1,wy1_licznik);
      if(wy1_licznik<=255){
        wy1_licznik++;
      }
    }
    else{
      wy1_licznik = 0;
      analogWrite(wy1,wy1_licznik);
    }

    //kanał drugi we2 -> wy2
    we2_state = digitalRead(we2);
    if (we2_state == HIGH){
      analogWrite(wy2,wy2_licznik);
      if(wy2_licznik<=255){
        wy2_licznik=wy2_licznik+1;
      }
    }
    else{
      wy2_licznik = 0;
      analogWrite(wy2,wy2_licznik);
    }

    //kanał trzeci we3 - >wy3
    we3_state = digitalRead(we3);
    if (we3_state == HIGH){
      analogWrite(wy3,wy3_licznik);
      if(wy3_licznik<=255){
        wy3_licznik=wy3_licznik+1;
      }
    }
    else{
      wy3_licznik = 0;
      analogWrite(wy3,wy3_licznik);
    }  

    //kanał czwarty we4 - >wy4
    we4_state = digitalRead(we4);
    if (we4_state == HIGH){
      analogWrite(wy4,wy4_licznik);
      if(wy4_licznik<=255){
        wy4_licznik++;
      }
    }
    else{
      wy4_licznik = 0;
      analogWrite(wy4,wy4_licznik);
    }
    czas_do_ostatniej_zmiany_wysterowania_silnika​ = time + tempo_startu_silnika;  
  }
  //dioda pulsująca rytmicznie
  if(time>=czas_do_ostatniej_zmiany_wysterowania_diody){
    if(stan_live_led==1){
      digitalWrite(live_led, HIGH);
      stan_live_led = 0;
      czas_do_ostatniej_zmiany_wysterowania_diody = time+(tempo_mrugania_diodki_pulse/16);
    }
    else{
      digitalWrite(live_led, LOW);
      stan_live_led = 1;
      czas_do_ostatniej_zmiany_wysterowania_diody = time+(tempo_mrugania_diodki_pulse*16);  
    }
  }
  
  //W zasadzie koniec programu jeszcze tylko jedno.
  //Kiedy wartość 'time' przekroczy maksimum (4294967295 czyli około 49dni) i zacznie liczyć od nowa,
  //to funkcje nie będą wywoływane bo czas będzie zawsze mniejszy niż wyliczony z max time + czas wykonania.
  //dlatego resetujemy czasy w przypadku gdy licznik time się przekręca.  
  if (time==0){
    czas_do_ostatniej_zmiany_wysterowania_silnika​ = tempo_startu_silnika;
    czas_do_ostatniej_zmiany_wysterowania_diody = tempo_mrugania_diodki_pulse;
  }
}

İmage

İmage


Załączone pliki
.lay  softstart-sp5mg.LAY (Rozmiar: 50.48 KB / Pobrań: 495)

...przede wszystkim nie zakłócać...
02-07-2013 0:16
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
Arduino - SQ9MDD - 30-06-2013, 14:28
RE: Arduino - SP6IFN - 30-06-2013, 18:12
RE: Arduino - SP9MRN - 30-06-2013, 18:36
RE: Arduino - SQ9MDD - 30-06-2013, 20:09
RE: Arduino - SP9MRN - 30-06-2013, 21:48
RE: Arduino - SP6IFN - 30-06-2013, 22:52
RE: Arduino - SP9MRN - 30-06-2013, 23:21
RE: Arduino - SP6IFN - 01-07-2013, 10:31
RE: Arduino - SQ6OXK - 06-09-2013, 12:25
RE: Arduino - SP3WXO - 01-07-2013, 10:33
RE: Arduino - SP9MRN - 01-07-2013, 10:46
RE: Arduino - SP6IFN - 01-07-2013, 12:52
RE: Arduino - SP5FCS - 01-07-2013, 14:10
RE: Arduino - SQ9MDD - 01-07-2013, 19:30
RE: Arduino - SP3WXO - 01-07-2013, 22:27
RE: Arduino - SQ9MDD - 01-07-2013, 23:42
RE: Arduino - SP5FCS - 01-07-2013, 23:47
RE: Arduino - SQ9MDD - 02-07-2013 0:16
RE: Arduino - SQ9NJE - 01-07-2013, 22:45
RE: Arduino - SQ4AVS - 02-07-2013, 6:22
RE: Arduino - SP9MRN - 02-07-2013, 11:28
RE: Arduino - SQ9MDD - 02-07-2013, 12:44
RE: Arduino - SP6IFN - 02-07-2013, 14:35
RE: Arduino - SP9MRN - 02-07-2013, 15:09
RE: Arduino - SP6IFN - 02-07-2013, 17:05
RE: Arduino - SP5ETB - 02-07-2013, 17:46
RE: Arduino - SQ9KRJ - 03-07-2013, 19:45
RE: Arduino - SP3WXO - 03-07-2013, 20:33
RE: Arduino - SP5ETB - 04-07-2013, 10:53
RE: Arduino - SQ9MDD - 03-07-2013, 21:16
RE: Arduino - SP3WXO - 04-07-2013, 18:12
RE: Arduino - SQ9MDD - 09-07-2013, 20:48
RE: Arduino - SP9MRN - 09-07-2013, 21:07
RE: Arduino - SQ9MDD - 10-07-2013, 9:21
RE: Arduino - SP6IFN - 10-07-2013, 10:32
RE: Arduino - SQ9MDD - 10-07-2013, 16:50
RE: Arduino - SP6IFN - 10-07-2013, 20:48
RE: Arduino - SQ9MDD - 10-07-2013, 21:08
RE: Arduino - SP6IFN - 10-07-2013, 21:55
RE: Arduino - SQ9MDD - 11-07-2013, 8:36
RE: Arduino - SQ4AVS - 14-07-2013, 20:15
RE: Arduino - SP6IFN - 14-07-2013, 20:28
RE: Arduino - SQ4AVS - 14-07-2013, 20:34
RE: Arduino - SP6IFN - 15-07-2013, 14:47
RE: Arduino - SP5ETB - 16-07-2013, 14:05
RE: Arduino - SP9MRN - 15-07-2013, 15:33
RE: Arduino - AMATOR - 15-07-2013, 16:26
RE: Arduino - SQ9MDD - 17-07-2013, 1:31
RE: Arduino - SQ4AVS - 29-07-2013, 19:22
RE: Arduino - SQ9MDD - 29-07-2013, 19:31
RE: Arduino - SQ4AVS - 29-07-2013, 20:09
RE: Arduino - SQ9MDD - 29-07-2013, 20:35
RE: Arduino - SQ4AVS - 16-08-2013, 7:19
RE: Arduino - SP6IFN - 17-08-2013, 12:38
RE: Arduino - SP9MRN - 17-08-2013, 12:58
RE: Arduino - SP6IFN - 17-08-2013, 14:11
RE: Arduino - SP3WXO - 17-08-2013, 16:25
RE: Arduino - SQ4AVS - 19-08-2013, 8:52
RE: Arduino - SP6IFN - 05-09-2013, 21:42
RE: Arduino - SP3SWJ - 29-11-2014, 11:43
RE: Arduino - SP9MRN - 06-09-2013, 0:12
RE: Arduino - SP6IFN - 06-09-2013, 11:12
RE: Arduino - SP9MRN - 06-09-2013, 11:57
RE: Arduino - SP9MRN - 06-09-2013, 12:51
RE: Arduino - SP6IFN - 06-09-2013, 14:14
RE: Arduino - SQ5KVS - 06-09-2013, 16:23
RE: Arduino - SQ6OXK - 06-09-2013, 22:22
RE: Arduino - SP6IFN - 06-09-2013, 23:33
RE: Arduino - SP6AUO - 28-09-2013, 15:07
RE: Arduino - SP9MRN - 28-09-2013, 15:46
RE: Arduino - SP6AUO - 28-09-2013, 16:09
RE: Arduino - SP9MRN - 28-09-2013, 17:22
RE: Arduino - SP6AUO - 28-09-2013, 18:05
RE: Arduino - SP9MRN - 30-09-2013, 10:51
RE: Arduino - SP6AUO - 30-09-2013, 13:16
RE: Arduino - SP9MRN - 30-09-2013, 14:58
RE: Arduino - SP6AUO - 30-09-2013, 16:39
RE: Arduino - SP9MRN - 30-09-2013, 17:32
RE: Arduino - SP6AUO - 30-09-2013, 20:29
RE: Arduino - SP9MRN - 30-09-2013, 21:21
RE: Arduino - SP6AUO - 02-10-2013, 7:24
RE: Arduino - SP9MRN - 02-10-2013, 14:02
RE: Arduino - SP6AUO - 02-10-2013, 17:03
RE: Arduino - SP6IFN - 02-10-2013, 18:46
RE: Arduino - SP6AUO - 03-10-2013, 19:33
RE: Arduino - SP6IFN - 03-10-2013, 20:52
RE: Arduino - SP6AUO - 04-10-2013, 8:13
RE: Arduino - SP9RQA - 04-10-2013, 10:14
RE: Arduino - SP6AUO - 05-10-2013, 8:14
RE: Arduino - SP6IFN - 05-10-2013, 10:31
RE: Arduino - SQ4AVS - 05-10-2013, 10:47
RE: Arduino - SP6AUO - 08-10-2013, 15:34
RE: Arduino - SP6IFN - 08-10-2013, 20:19
RE: Arduino - SP9MRN - 09-10-2013, 0:39
RE: Arduino - SP6AUO - 09-10-2013, 6:19
RE: Arduino - SP6IFN - 09-10-2013, 11:32
RE: Arduino - SQ5KVS - 09-10-2013, 12:56
RE: Arduino - SP6IFN - 09-10-2013, 13:15
RE: Arduino - SQ5KVS - 09-10-2013, 13:43
RE: Arduino - SP6IFN - 09-10-2013, 14:32
RE: Arduino - SQ5KVS - 09-10-2013, 15:54
RE: Arduino - SP6IFN - 09-10-2013, 16:36
RE: Arduino - SQ5KVS - 09-10-2013, 16:43
RE: Arduino - SP6AUO - 19-10-2013, 16:24
RE: Arduino - SQ1GYQ - 19-10-2013, 18:08
RE: Arduino - SP6AUO - 19-10-2013, 19:22
RE: Arduino - SP6IFN - 20-10-2013, 17:46
RE: Arduino - SP6AUO - 20-10-2013, 22:31
RE: Arduino - SP6IFN - 20-10-2013, 23:00
RE: Arduino - SP6AUO - 21-10-2013, 0:14
RE: Arduino - SP6IFN - 21-10-2013, 10:30
RE: Arduino - SP6AUO - 21-10-2013, 11:51
RE: Arduino - SQ9MDD - 26-12-2013, 12:30
RE: Arduino - SP6VWX - 01-07-2014, 23:14
RE: Arduino - SQ9MDD - 05-07-2014, 11:08
RE: Arduino - SP9MRN - 06-07-2014, 10:55
RE: Arduino - SP6IFN - 13-07-2014, 16:43
RE: Arduino - SP9LE - 15-07-2014, 9:14
RE: Arduino - SP9MRN - 15-07-2014, 11:43
RE: Arduino - SQ9MDD - 20-07-2014, 22:17
RE: Arduino - SP3SWJ - 01-11-2014, 3:36
RE: Arduino - SP4XYD - 27-07-2014, 23:21
RE: Arduino - SP2IPT - 28-07-2014, 7:19
RE: Arduino - SP4XYD - 05-08-2014, 21:11
RE: Arduino - SQ8LUV - 17-10-2014, 4:58
RE: Arduino - SQ8MHI - 17-10-2014, 9:37
RE: Arduino - SQ8LUV - 17-10-2014, 12:06
RE: Arduino - SQ1GYQ - 29-11-2014, 12:07
RE: Arduino - SP3SWJ - 29-11-2014, 12:15
RE: Arduino - SQ1GYQ - 29-11-2014, 13:08
RE: Arduino - SP3SWJ - 02-12-2014, 2:26
RE: Arduino - SP6IFN - 29-11-2014, 13:59
RE: Arduino - SQ1GYQ - 02-12-2014, 18:53
RE: Arduino - SP3SWJ - 03-12-2014, 2:39
RE: Arduino - SQ5KVS - 03-12-2014, 12:12
RE: Arduino - SP2IPT - 06-12-2014, 21:12
RE: Arduino - SP9RQA - 14-08-2015, 13:21
RE: Arduino - SP9RQA - 09-11-2015, 16:35
RE: Arduino - SP0NGE - 25-11-2015, 14:36
RE: Arduino - SP9FKP - 25-11-2015, 15:35
RE: Arduino - SP0NGE - 25-11-2015, 15:53
RE: Arduino - SP9RQA - 25-11-2015, 19:31
RE: Arduino - SP9RQA - 04-02-2016, 9:55
RE: Arduino - SP3FEC - 30-08-2016, 18:26
RE: Arduino - SP0NGE - 30-08-2016, 18:38
RE: Arduino - SP3FEC - 30-08-2016, 19:51
RE: Arduino - SP0NGE - 30-08-2016, 19:59
RE: Arduino - SP9MRN - 31-08-2016, 1:24
RE: Arduino - SP3FEC - 30-08-2016, 22:48
RE: Arduino - SP0NGE - 30-08-2016, 23:47
RE: Arduino - SP0NGE - 31-08-2016, 9:02
RE: Arduino - SP6IFN - 31-08-2016, 10:13
RE: Arduino - SP3FEC - 31-08-2016, 10:32

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości