• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Prośba o pomoc.? sterowanie Motopompa
#1
Witam jestem nowy i dopiero zaczynam przygodę z programowaniem mam wielka prośbę do kolegów.
Mianowicie chciał bym wykonać pilot zdalnego odpalania motopompy spalinowej układ dość prosty włączanie wyłączanie zapłonu grzanie świec ok.30 sekund i  załączanie rozrusznika z połączeniem układu dam sobie rade ale napisanie programu to czarna magia prosił bym o pomoc i o wyrozumiałość układ był by oparty na Arduino Nano i Uno  odbiornik i nadajnik
RF433Mhz
 
Odpowiedź
#2
Trzeba by na początek rozpisać cykl zapłonu i jakie informacje z motopompy jesteś w stanie zebrać ( obroty , poziom paliwa , temperatura silnika , sterowanie przepustnicą , sterowanie ssaniem , itd. ) . Do tego co opisałeś to w zasadzie możesz wykorzystać dzwonek bezprzewodowy i włącznik czasowy .
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#3
pompa startuje od z gazem do dechy chodzi mi tylko o trzy przyciski na pilocie on/of drugi grzanie świeć i trzeci rozruch co do rozruchu to jest rożnie jest to stary diesel główna ideą tego pomysłu jest to żeby odpalać pompę z kilku metrów link do pompy https://www.youtube.com/watch?v=fX922qouFzc
 
Odpowiedź
#4
jaki zasięg ? do 10m to można by smyrfona i bluetootha użyć a w terenie otwartym może i ze 30 m
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#5
Myślałem nad bluetooth bo na to potrafię napisać program jakiś prosty ale telefon plus woda w parze nie idzie a najtańsze arduino kosz około 7zł zasiąg jaki mnie interesuje to jakieś 50m
 
Odpowiedź
#6
bardzo bym prosił kolegów gdyby ktoś miał troszkę czasu i ochoty napisania takiego krótkiego programu do sterowania trzema przyciskami był bym bardzo wdzięczny
 
Odpowiedź
#7
korzystałem z tego kodu do sterowania jednym ledem ale nie potrafię go rozbudować żeby działały trzy

Kod:
dla nadajnika

#include <VirtualWire.h>
int guzik=2;

void setup()
{
  pinMode(guzik, INPUT_PULLUP);

  vw_set_tx_pin(9);
    vw_setup(2000);     // Bits per sec
}

void loop()
{
  char *msg;
  digitalWrite(13, true);
    

if (digitalRead (guzik)==LOW) {msg="on"; }
else {msg="off"; } ;


      vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(13, false);
    delay(200);

}

dla odbiornika

#include <VirtualWire.h>
int LED=2;

boolean LEDON=false;
char stan;
void setup()
{

  Serial.begin(9600);
  pinMode (LED,OUTPUT);

  vw_setup(2000);    
  vw_set_rx_pin(4);
  vw_rx_start();    
}

void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen))
    {
    int i;
       String stan;
      for (i = 0; i < buflen; i++)
  {
  stan +=char(buf[i]);
  }
     if ( stan =="on") {
       LEDON=!LEDON;
  digitalWrite (LED, LEDON);
  delay(2000);
  digitalWrite (LED,LEDON);
  delay(50);
    }
}    }
 
Odpowiedź
#8
Jeżeli działa to trzeba powielić Wink

Kod:
// dla nadajnika

#include <VirtualWire.h>
int guzik1=2;
int guzik2=3;
int guzik3=4;

void setup()
{
pinMode(guzik1, INPUT_PULLUP);
pinMode(guzik2, INPUT_PULLUP);
pinMode(guzik3, INPUT_PULLUP);

vw_set_tx_pin(9);
vw_setup(2000); // Bits per sec
}

void loop()
{
char *msg;
digitalWrite(13, true);


if (digitalRead (guzik1)==LOW) {msg="on1"; }
else {msg="off1"; } ;
if (digitalRead (guzik2)==LOW) {msg="on2"; }
else {msg="off2"; } ;
if (digitalRead (guzik3)==LOW) {msg="on3"; }
else {msg="off3"; } ;


vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13, false);
delay(200);

}



// dla odbiornika


#include <VirtualWire.h>
int LED1=2;
int LED2=3;
int LED3=4;

boolean LEDON1 = false;
boolean LEDON2 = false;
boolean LEDON3 = false;

char stan;

void setup()
{

Serial.begin(9600);
pinMode (LED1,OUTPUT);
pinMode (LED2,OUTPUT);
pinMode (LED3,OUTPUT);

vw_setup(2000);
vw_set_rx_pin(4);
vw_rx_start();
}

void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message(buf, &buflen))
{
int i;
String stan;
for (i = 0; i < buflen; i++)
{
stan +=char(buf[i]);
}

if ( stan =="on1") {
LEDON1=!LEDON1;
digitalWrite (LED1, LEDON1);
delay(2000);
digitalWrite (LED1,LEDON1);
delay(50);
}

if ( stan =="on2") {
LEDON1=!LEDON1;
digitalWrite (LED2, LEDON2);
delay(2000);
digitalWrite (LED2,LEDON2);
delay(50);
}

if ( stan =="on3") {
LEDON1=!LEDON1;
digitalWrite (LED3, LEDON3);
delay(2000);
digitalWrite (LED3,LEDON3);
delay(50);
}
} }
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#9
niestety nie chce zagadać już próbowałem powielić kod i nic jak się powieli nie chce się zapalić żadna
 
Odpowiedź
#10
He dałem się złapać zobacz ten kod jest problem bo wysyła nonstop coś a ma wysłać tylko jak naciśniesz

Kod:
// dla nadajnika

#include <VirtualWire.h>

int guzik1=2;
int guzik2=3;
int guzik3=4;

char *msg;

void setup()
{
pinMode(guzik1, INPUT_PULLUP);
pinMode(guzik2, INPUT_PULLUP);
pinMode(guzik3, INPUT_PULLUP);

vw_set_tx_pin(9);
vw_setup(2000); // Bits per sec
}

void loop()
{
if (digitalRead (guzik1)==LOW){msg="ona";sendtx();}
if (digitalRead (guzik2)==LOW){msg="onb";sendtx();}
if (digitalRead (guzik3)==LOW){msg="onc";sendtx();}
}

void sendtx(void){

digitalWrite(13, true);

vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13, false);
delay(200);

msg="off";

}

// dla odbiornika


#include <VirtualWire.h>
int LED1=2;
int LED2=3;
int LED3=4;

boolean LEDON1 = false;
boolean LEDON2 = false;
boolean LEDON3 = false;

char stan;

void setup()
{

Serial.begin(9600);
pinMode (LED1,OUTPUT);
pinMode (LED2,OUTPUT);
pinMode (LED3,OUTPUT);

vw_setup(2000);
vw_set_rx_pin(4);
vw_rx_start();
}

void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message(buf, &buflen))
{
int i;
String stan;
for (i = 0; i < buflen; i++)
{
stan +=char(buf[i]);
}

if ( stan =="ona") {
LEDON1=!LEDON1;
digitalWrite (LED1, LEDON1);
delay(2000);
digitalWrite (LED1,LEDON1);
delay(50);
}

if ( stan =="onb") {
LEDON2=!LEDON2;
digitalWrite (LED2, LEDON2);
delay(2000);
digitalWrite (LED2,LEDON2);
delay(50);
}

if ( stan =="onc") {
LEDON3=!LEDON3;
digitalWrite (LED3, LEDON3);
delay(2000);
digitalWrite (LED3,LEDON3);
delay(50);
}
} }
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości