2 programy v Arduine
Moderátor: Moderátori
-
- Okoloidúci
- Príspevky: 14
- Dátum registrácie: 15 Okt 2013, 22:17
2 programy v Arduine
Zdravim potrebujem poradit.. Chcem dat do arduina 2 rozne programy.. jeden mi bude zopinat rele a druhy bude vnimat pohybovy senzor a potom zapne kontrolku. Problem je ten ze neviem ako ich mam zlucit do jedneho alebo v akom poradi alebo ako ich tam napisat dakujem za pomoc.
0
Re: 2 programy v Arduine
na zaciatku si otestuj polohu jedneho pinu a podla toho skoc na jeden, alebo druhy program. Ten pin sa pouzije ako prepinac funkcii.
0
-
- Okoloidúci
- Príspevky: 14
- Dátum registrácie: 15 Okt 2013, 22:17
Re: 2 programy v Arduine
neviem ako myslis... ja potrebujem tento program:
int LEDka = 10;
int TLAC = 9;
boolean svetlo = false;
void setup()
{
pinMode(LEDka, OUTPUT);
pinMode(TLAC, INPUT);
}
void loop()
{
if (digitalRead(TLAC))
{
if (svetlo) svetlo = false; else svetlo = true;
digitalWrite(LEDka, svetlo);
while (digitalRead(TLAC)) delay(50);
}
}
a tento program:
int ledPin = 13;
int inputPin = 2;
int pirState = LOW;
int val = 0;
int pinSpeaker = 10;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin, INPUT);
pinMode(pinSpeaker, OUTPUT);
Serial.begin(9600);
}
void loop(){
val = digitalRead(inputPin);
if (val == HIGH) {
digitalWrite(ledPin, HIGH);
playTone(300, 160);
delay(150);
if (pirState == LOW) {
Serial.println("Motion detected!");
pirState = HIGH;
}
} else {
digitalWrite(ledPin, LOW);
playTone(0, 0);
delay(300);
if (pirState == HIGH){
Serial.println("Motion ended!");
pirState = LOW;
}
}
}
void playTone(long duration, int freq) {
duration *= 1000;
int period = (1.0 / freq) * 1000000;
long elapsed_time = 0;
while (elapsed_time < duration) {
digitalWrite(pinSpeaker,HIGH);
delayMicroseconds(period / 2);
digitalWrite(pinSpeaker, LOW);
delayMicroseconds(period / 2);
elapsed_time += (period);
}
}
tieto programy chcem dat do jedneho a aby boli nezavysle na sebe..
int LEDka = 10;
int TLAC = 9;
boolean svetlo = false;
void setup()
{
pinMode(LEDka, OUTPUT);
pinMode(TLAC, INPUT);
}
void loop()
{
if (digitalRead(TLAC))
{
if (svetlo) svetlo = false; else svetlo = true;
digitalWrite(LEDka, svetlo);
while (digitalRead(TLAC)) delay(50);
}
}
a tento program:
int ledPin = 13;
int inputPin = 2;
int pirState = LOW;
int val = 0;
int pinSpeaker = 10;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin, INPUT);
pinMode(pinSpeaker, OUTPUT);
Serial.begin(9600);
}
void loop(){
val = digitalRead(inputPin);
if (val == HIGH) {
digitalWrite(ledPin, HIGH);
playTone(300, 160);
delay(150);
if (pirState == LOW) {
Serial.println("Motion detected!");
pirState = HIGH;
}
} else {
digitalWrite(ledPin, LOW);
playTone(0, 0);
delay(300);
if (pirState == HIGH){
Serial.println("Motion ended!");
pirState = LOW;
}
}
}
void playTone(long duration, int freq) {
duration *= 1000;
int period = (1.0 / freq) * 1000000;
long elapsed_time = 0;
while (elapsed_time < duration) {
digitalWrite(pinSpeaker,HIGH);
delayMicroseconds(period / 2);
digitalWrite(pinSpeaker, LOW);
delayMicroseconds(period / 2);
elapsed_time += (period);
}
}
tieto programy chcem dat do jedneho a aby boli nezavysle na sebe..
0
-
- Stály člen
- Príspevky: 226
- Dátum registrácie: 06 Feb 2013, 19:55
- Bydlisko: Kosice a este trochu dalej
- Vek: 28
Re: 2 programy v Arduine
chces, aby tie programy behali spolocne? Alebo zeby kazdy z nich bezal po nejakej akcii alebo ako?
0
-
- Okoloidúci
- Príspevky: 14
- Dátum registrácie: 15 Okt 2013, 22:17
-
- Stály člen
- Príspevky: 226
- Dátum registrácie: 06 Feb 2013, 19:55
- Bydlisko: Kosice a este trochu dalej
- Vek: 28
Re: 2 programy v Arduine
Asi najjednoduhsie ich bude napisat za sebou ako su teraz. Avsak, dopadne to tak, ze najprv zbehne prvy, potom druhy. Je vcelku mozne, ze while sa ti zacykli a ostanes v tom prvom.
Potom je moznost, ich upravit tak, aby sa nedokazali zacyklit. Potom ich jednoducho pustis za sebou a cyklus nastavis obom naraz
Tretia moznost je, zacat od zaciatku a uplne to prerobit do jedneho programu.
Potom je moznost, ich upravit tak, aby sa nedokazali zacyklit. Potom ich jednoducho pustis za sebou a cyklus nastavis obom naraz
Tretia moznost je, zacat od zaciatku a uplne to prerobit do jedneho programu.
0
Re: 2 programy v Arduine
Arduino som si objednal, az prijde, zacnem nechat blikat LED na pin 13.
Hadam, ze na Arduino dva programy _spolecne_ behat nebudu, musi sa to simulovat, najlahsie asi takto.
Hadam, ze na Arduino dva programy _spolecne_ behat nebudu, musi sa to simulovat, najlahsie asi takto.
Kód: Vybrať všetko
void loop() {
int x=1
boolean pokracuj=true
while (x<999 .and. pokracuj) {
x+=1
{program 1}
}
x=1
pokracuj=true
while (x<999 .and. pokracuj) {
x+=1
{program 2}
}
}
0
Samozřejmě, že dědeček nemá kapesní hodinky poháněné elektřinou. Takový nesmysl si může vymyslit jen Saturnin. (Zdenek Jirotka, 1942)
-
- Okoloidúci
- Príspevky: 14
- Dátum registrácie: 15 Okt 2013, 22:17
Re: 2 programy v Arduine
a ešte mam jeden problem.. chcem ovladat 5 led s 5 spinacmi.. ale tak ze Led1 bude ovladana Spinacom1, Led2 bude ovladana Spinacom2 atd. a chcem aby sa to dalo tak ze hocikedy si mozem zapnut aleboo vypnut hocijaku led... tento program by som tam chcel pouzit:
int LEDka = 13; // LED připojena na pin 10
int TLAC = 7; // Tlacitko pripojeno na pin 9
boolean svetlo = false; // Pomocná hodnota světlo
void setup()
{
pinMode(LEDka, OUTPUT); // pin 10 nastaven jako výstup
pinMode(TLAC, INPUT_PULLUP); // pin 9 nastaven jako vstup
}
void loop()
{
// když je hodnota na tlačítku vysoká (true)
if (digitalRead(TLAC))
{
//když je světlo, udělej tmu a naopak
if (svetlo) svetlo = false; else svetlo = true;
//zapiš hodnotu světla na výstup
digitalWrite(LEDka, svetlo);
//dokud je tlačítko sepnuté čekej 50ms
while (digitalRead(TLAC)) delay(50);
}
}
ide mi o to, ze s tym programom si budem moct zopinat rele a vypinat rele... ale tak ze ked chcem si zapnut 3. rele tak si zapnem a potom ked si chcem zapnut 1. rele zapnem a hocikedy mozem zapnut/vypnut hocijake rele bezohladu na poradi...
int LEDka = 13; // LED připojena na pin 10
int TLAC = 7; // Tlacitko pripojeno na pin 9
boolean svetlo = false; // Pomocná hodnota světlo
void setup()
{
pinMode(LEDka, OUTPUT); // pin 10 nastaven jako výstup
pinMode(TLAC, INPUT_PULLUP); // pin 9 nastaven jako vstup
}
void loop()
{
// když je hodnota na tlačítku vysoká (true)
if (digitalRead(TLAC))
{
//když je světlo, udělej tmu a naopak
if (svetlo) svetlo = false; else svetlo = true;
//zapiš hodnotu světla na výstup
digitalWrite(LEDka, svetlo);
//dokud je tlačítko sepnuté čekej 50ms
while (digitalRead(TLAC)) delay(50);
}
}
ide mi o to, ze s tym programom si budem moct zopinat rele a vypinat rele... ale tak ze ked chcem si zapnut 3. rele tak si zapnem a potom ked si chcem zapnut 1. rele zapnem a hocikedy mozem zapnut/vypnut hocijake rele bezohladu na poradi...
0