Witam
Panowie potrzebuje pomocy w napisaniu programu który będzie uruchamiał silnik krokowy NEMA 23 2Nm z określaną prędkością, następnie po wykryciu przez czujnik zbliżeniowy (np NC NPN) obiektu silnik się zatrzymuje, a uruchamiają się 2 przekaźniki, jeden po drugim z określoną zwłoką. Dodam że jestem bardzo początkującym użytkownikiem Arduino i dopiero uczę się programowania dlatego proszę o pomoc w moim pierwszym programie.
Hmmm... zacznij, jeśli jesteś bardzo początkujący, od:
1. Niech dioda mruga.
2. Niech dioda świeci po wciśnięciu przycisku.
2b. Niech dioda świeci, kiedy zrobi się ciemno (podpowiedź: fotorezystor).
3. Niech, po pokręceniu potencjometrem, dioda zjaśnia się i ściemnia (podpowiedź: PWM).
4. Symulator świateł ulicznych: 3 diody dla samochodów, 2 diody dla pieszych, przycisk.
Nie rzucaj się na głęboką wodę, bo utoniesz, taka jest prawda.
Jeśli będziesz miał w przyszłości problemy, pomożemy... ale nie oczekuj od nas, że napiszemy za Ciebie gotowe programy.
Ok zaczyn dzisiaj działać i będę na bieżąco pokazywał co zrobiłem.
Ogólnie te 4 punkty ogarniam bo wszystko jest tu
https://forbot.pl/blog/kurs-arduino-pomi...adc-id3819
Chodzi mi o kontrolę silnikiem krokowym przy pomocy większego sterownika (z racji gabarytów silnika)
Dzisiaj wrzucę to nad czym kombinuję
Sterowanie silnikiem, o jakim wspomniałeś wcześniej, znajdziesz choćby
tutaj
Dzięki za link krn78
Posiedziałem i w sumie udało mi się zrobić to co chcę
Kod:
#include <Stepper.h>
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
int stepCount = 0; // number of steps the motor has taken
void setup() {
pinMode(7, OUTPUT); //elektrozwor
pinMode(6, OUTPUT); //elektrozawór
pinMode(5, INPUT_PULLUP); //czujnik zblizeniowy
digitalWrite(7, LOW); //Wyłączenie diody
digitalWrite(6, LOW);
digitalWrite(5, LOW);
}
void loop()
{
if (digitalRead(5) == LOW) { //Jeśli przycisk wciśnięty
digitalWrite(6, HIGH); //Włącz diodę
delay(1000); //Czekamy 10 sekund
digitalWrite(6, LOW); //Wyłączamy diodę
delay(1000);
digitalWrite(7, HIGH);
delay(1000);
digitalWrite(7, LOW);
delay(1000);
} else {
// read the sensor value:
int sensorReading = analogRead(A0);
// map it to a range from 0 to 100:
int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
// set the motor speed:
if (motorSpeed > 0) {
myStepper.setSpeed(motorSpeed);
// step 1/100 of a revolution:
myStepper.step(stepsPerRevolution / 100);
}
}
}
(24-11-2017, 23:37)jacoslaw@gmail.com napisał(a): [ -> ]Dzięki za link krn78
Posiedziałem i w sumie udało mi się zrobić to co chcę
Proszę.
Przy okazji, kiedy zamieszczasz kod programu, umieszczaj go w znacznikach [ code ] (tutaj kod) [ /code ] (wewnątrz znaczników usuń spacje).