Stránka 3 z 27
Re: Mini CNC osa Z
Napsal: 28 kvě 2019, 21:02
od gilhad
Tohle si uprav pro svoje potreby
Kód: Vybrat vše
if (digitalRead(switchReed)==HIGH){
digitalWrite(ledOpen, LOW);
digitalWrite(ledClose, HIGH);
Serial.println("Your Door is Closed");
}
else {
digitalWrite(ledOpen, HIGH);
digitalWrite(ledClose, LOW);
Serial.println("Your Door is Open");
}
a dej tam, jak je radka
Kód: Vybrat vše
// tady můžu řešit třeba čtení tlačítek, nebo další zajímavé věci, co se dějí průběžně
samozrejme musis ty diody mit nekde zapojene, nekde deklarovane a nekde nastavene jako vystup, s tlacitkem/spinacem obdobne
Pokud budes chtit pouzit ty co tam uz mas, tak je asi nebudes ovladat podle vychylky serva (cili vypustis ty radky)
Re: Mini CNC osa Z
Napsal: 30 kvě 2019, 16:39
od zbysek
kiRRow píše: ↑18 kvě 2019, 09:49
chybí mi nad tím
Kód: Vybrat vše
void setup() {
int pos = 0;
// a další proměnné ... nastavení vstupů a výstupů ..
}
... jo a co dělá ten středník v tý podmínce ... koukni jak podmínku zapisovat správně ...
... a podmínka jestli A rovná se B se zapisuje takto if(A==B) ... pokud dáš jen jedno = ... kompilátor to sežere, ale podmínka nebude fungovat správně
if(A==B) // tohle kompilátor zpracuje jako " pokud A se rovná B "
if(A=B) // tohle kompilátor zpracuje jako " Pokud se povedlo do proměnné A zapsat hodnotu z proměnné B "
Tohle si dovolím upřesnit
kiRRow píše: ↑18 kvě 2019, 09:49
if(A==B) // tohle kompilátor zpracuje jako " pokud A se rovná B "
Je pravda
kiRRow píše: ↑18 kvě 2019, 09:49
if(A=B) // tohle kompilátor zpracuje jako " Pokud se povedlo do proměnné A zapsat hodnotu z proměnné B "
tohle pravda není.
Operátor přiřazení (tedy =) je v C/C++ výraz, tedy produkuje hodnotu.
A to takovou, která je rovna pravé straně od =.
Tedy
Kód: Vybrat vše
byte a = 10;
byte b;
if(b = a) {
// podmínka se provede, (b = a) se vyhodnotí na hodnotu 10
...
}
vs.
Kód: Vybrat vše
byte a = 0;
byte b;
if(b = a) {
// podmínka se NEprovede, (b = a) se vyhodnotí na hodnotu 0
...
}
Dřív jsem to taky chápal tak, jak píšete (víceméně intuitivně, protože se to tak ve většině případů chová), ale tento špatný předpoklad může vést na velice těžko hledatelné chyby
Re: Mini CNC osa Z
Napsal: 03 čer 2019, 16:46
od Hanz
ahojky, nahrál jsem video "zobrazení polohy serva II." je to tuning na předešlé video. Tady je použit pomocný kontakt + Arduino Nano + led + sketch :
https://randomnerdtutorials.com/monitor ... d-arduino/
Video zde :
https://www.youtube.com/watch?v=8PdDgmVDa3c
Časové důvody mi nedovolují zkoumat a tvořit více ! děkuju admin za úpravu přízpěvků Hanz
Re: Mini CNC osa Z
Napsal: 05 čer 2019, 18:41
od Hanz
Re: Mini CNC osa Z
Napsal: 15 čer 2019, 22:34
od Hanz
zdravím Vás pánové, mám opět prosbu. Na netu jsem našel zapojení DC motorku se dvěma tlačítky, ty se mají chovat jako Start Stop motorek odkaz
https://www.instructables.com/id/Start- ... h-Arduino/. Poskládal jsem podle zapojení, nahrál sketch, ale rozsvítí se mi pouze zelená led - nic jiného nefunguje ani motorek, při zmáčknutí druhého tlačítka se nezhasne zelená led a nerozsvítí červená led, nereaguje motorek. Nemůžu přijít proč ?! Pravda je , že jsem nahradil tranzistor 2N2222 za BC547 a diodu u motorku 1N4001 za 1N4004. motorek jsem dal 5V z dvd mechaniky označení 21651D.Poskládal jsem tohle zapojení protože místo motorku bych dal servo, tak jak jsem již psal dříve - toto zapojení je tomu nejvíce podobno. díky za nápovědy Hanz
tady je sketch :
[code
Kód: Vybrat vše
int buttonPin1 = 2; //Start button
int buttonPin2 = 3; //Stop button
int greenLedPin = 6;//green led start status
int redLedPin = 7; //red led stop status
int motorPin = 9; // the motor's pin
int buttonStatus1 = 0;
int buttonStatus2 = 0;
void setup() {
pinMode(motorPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(redLedPin, OUTPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
}
void loop() {
buttonStatus1 = digitalRead(buttonPin1);
buttonStatus2 = digitalRead(buttonPin2);
if (buttonStatus1 == HIGH && buttonStatus2 == LOW) { // if the start button is pressed (AND stop button not) digitalWrite(motorPin, HIGH);// turn the motor ON
digitalWrite(greenLedPin, HIGH); //turn the green led indicator ON
digitalWrite(redLedPin, LOW); //turn the red led indicator OFF }
if (buttonStatus1 == LOW && buttonStatus2 == HIGH) { // if stop button is pressed (AND the start off)
digitalWrite(motorPin, LOW); // turn the motor OFF
digitalWrite(greenLedPin, LOW); //turn the green led indicator OFF
digitalWrite(redLedPin, HIGH); //turn the red led indicator ON
}
}}
][/code]
Re: Mini CNC osa Z
Napsal: 15 čer 2019, 23:59
od Hanz
znovu a znovu se dívám na sketch a zjistil jsem, že není zvýrazněná složená závorka u první podmínky ?! Může to být ten problém ?
Re: Mini CNC osa Z
Napsal: 16 čer 2019, 01:18
od gilhad
Mas zavorku od prvni podminky az za podminkou druhou a to asi neni to, co chces.
obecne to je
ten prikaz muze byt but nejaky jednoduchy, nebo blok ve slozenych zavorkach.
Vlozene slozene zavorky jsou proste do sebe vlozene.
ty mas
Kód: Vybrat vše
void loop() {
neco;
neco;
if (podminka1) {
cosi;
cosi;
if (podminka2) { // co se s podminkou 1 skoro vylucuje, ale stejne se to vyhodnocuje a dela pouze pokud podminka1 plati
jine;
jine;
}
}
}
prekladaci jsou odsazeni fuk, ale takhle to vyhodnoti
Re: Mini CNC osa Z
Napsal: 16 čer 2019, 08:09
od Hanz
volejte sláva - všechno chodí, jak má
nejdříve jsem u první podmínky uzavřel závorku a nahrál sketch. Začaly se mi podle stisknutých tlačítek rozsvědcet led.
Pak jsem si všiml, že není deklarovaný v první podmínce - je to na nejdelším řádku :
Kód: Vybrat vše
digitalWrite(motorPin, HIGH);// turn the motor ON
provedeno, zkompilováno, nahráno a sketch se rozběhl SUPER !!!
tady je funkční Start/Stop DC Motor
Kód: Vybrat vše
int buttonPin1 = 2; //Start button
int buttonPin2 = 3; //Stop button
int greenLedPin = 6;//green led start status int
int redLedPin = 7; //red led stop status
int motorPin = 9; // the motor's pin
int buttonStatus1 = 0;
int buttonStatus2 = 0;
void setup() {
pinMode(motorPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(redLedPin, OUTPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
}
void loop() {
buttonStatus1 = digitalRead(buttonPin1);
buttonStatus2 = digitalRead(buttonPin2);
if (buttonStatus1 == HIGH && buttonStatus2 == LOW)
{ // if the start button is pressed (AND stop button not)
digitalWrite(motorPin, HIGH);// turn the motor ON
digitalWrite(greenLedPin, HIGH); //turn the green led indicator ON
digitalWrite(redLedPin, LOW); //turn the red led indicator OFF
}
if (buttonStatus1 == LOW && buttonStatus2 == HIGH)
{ // if stop button is pressed (AND the start off)
digitalWrite(motorPin, LOW); // turn the motor OFF
digitalWrite(greenLedPin, LOW); //turn the green led indicator OFF
digitalWrite(redLedPin, HIGH); //turn the red led indicator ON
}
}
gilhad velké díky za nasměrování
No a nyní vyměnit "motor" za "servo"
Re: Mini CNC osa Z
Napsal: 19 čer 2019, 18:24
od Hanz
myslel jsem si , že vyměnit motor za servo bude hračka , ale velice jsem se zmýlil ! po všelijakých trápeních mi vyšel paskvil a nevím proč. Místo toho aby 1tlačítko spustila servo a 2 tlačítko ho zastavila vzniklo, že po klepnutí na 1tlačítko se servo natočí o 180 stupňů a po klepnutí na 2 tlačítko se servo vrátí zpět. Když přidržím tlačítko /a/ delší dobu, servo trhaným pohybem se posouvá skoro na místě tam a zpět ?! Jak z toho ven ?
Kód: Vybrat vše
#include <Servo.h> //zahrnutí knihovny pro ovládání servo motoru
Servo myservo; //každý motor má svou instanci třídy Servo
int pos = 0; //proměnná obsahující pozici motoru (úhel natočení)
unsigned long currentMillis, lastPosMillis;
int smer; // +1 dopředu, -1 dozadu
int buttonPin1 = 2; //Start button
int buttonPin2 = 3; //Stop button
int greenLedPin = 6;//green led start status int
int redLedPin = 7; //red led stop status
int buttonStatus1 = 0;
int buttonStatus2 = 0;
void setup() {
myservo.attach(9); // toto servo je připojeno na pin 9
pinMode(greenLedPin, OUTPUT);
pinMode(redLedPin, OUTPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pos = 0;
smer = 1;
currentMillis=millis();
lastPosMillis=currentMillis;
myservo.write(pos);
}
void loop() {
buttonStatus1 = digitalRead(buttonPin1);
delay(10);
buttonStatus2 = digitalRead(buttonPin2);
delay(10);
if (buttonStatus1 == HIGH && buttonStatus2 == LOW)
{ // if the start button is pressed (AND stop button not)
for(pos = 0; pos <= 180; pos += 1) //je od úhlu 0 do úhlu 180
myservo.write(pos);
digitalWrite(greenLedPin, HIGH); //turn the green led indicator ON
digitalWrite(redLedPin, LOW); //turn the red led indicator OFF
}
if (buttonStatus1 == LOW && buttonStatus2 == HIGH)
{ // if stop button is pressed (AND the start off)
for(pos = 180; pos >= 0; pos -= 1)
myservo.write(pos);
digitalWrite(greenLedPin, LOW); //turn the green led indicator OFF
digitalWrite(redLedPin, HIGH); //turn the red led indicator ON
}
}
dával jsem dohromady sketch Start Stop DC motor a místo motoru vložil servo a taky od gilhada upravený sketch serva s led.
Re: Mini CNC osa Z
Napsal: 19 čer 2019, 23:14
od gilhad
U motoru zadavas rychlost otaceni - u serva zadavas polohu, kam ma byt natoceno.