Mini CNC osa Z

Odpovědět
Uživatelský avatar
gilhad
Příspěvky: 778
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Mini CNC osa Z

Příspěvek od gilhad » 28 kvě 2019, 21:02

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)

zbysek
Site Admin
Příspěvky: 125
Registrován: 22 úno 2017, 15:18
Reputation: 0

Re: Mini CNC osa Z

Příspěvek od zbysek » 30 kvě 2019, 16:39

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 :)

Hanz
Příspěvky: 262
Registrován: 25 dub 2019, 23:52
Reputation: 0

Re: Mini CNC osa Z

Příspěvek od Hanz » 03 čer 2019, 16:46

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

Hanz
Příspěvky: 262
Registrován: 25 dub 2019, 23:52
Reputation: 0

Re: Mini CNC osa Z

Příspěvek od Hanz » 05 čer 2019, 18:41

ušetřeno trochu času ! co vy na to ?
https://www.youtube.com/watch?v=NKAFyG9uh7M

Hanz
Příspěvky: 262
Registrován: 25 dub 2019, 23:52
Reputation: 0

Re: Mini CNC osa Z

Příspěvek od Hanz » 15 čer 2019, 22:34

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]

Hanz
Příspěvky: 262
Registrován: 25 dub 2019, 23:52
Reputation: 0

Re: Mini CNC osa Z

Příspěvek od Hanz » 15 čer 2019, 23:59

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 ?

Uživatelský avatar
gilhad
Příspěvky: 778
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Mini CNC osa Z

Příspěvek od gilhad » 16 čer 2019, 01:18

Mas zavorku od prvni podminky az za podminkou druhou a to asi neni to, co chces.

obecne to je

Kód: Vybrat vše

if (podminka) prikaz;
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

Hanz
Příspěvky: 262
Registrován: 25 dub 2019, 23:52
Reputation: 0

Re: Mini CNC osa Z

Příspěvek od Hanz » 16 čer 2019, 08:09

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"

Hanz
Příspěvky: 262
Registrován: 25 dub 2019, 23:52
Reputation: 0

Re: Mini CNC osa Z

Příspěvek od Hanz » 19 čer 2019, 18:24

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.

Uživatelský avatar
gilhad
Příspěvky: 778
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Mini CNC osa Z

Příspěvek od gilhad » 19 čer 2019, 23:14

U motoru zadavas rychlost otaceni - u serva zadavas polohu, kam ma byt natoceno.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti