ШИМ пины. Не могу подать ШИМ сигнал.
- Войдите на сайт для отправки комментариев
Вопрос такой! Почему в случае скетча "мотор2" я не могу подать шим сигнал на выводы. (указаны в скетче) А в случае скетча "тест ШИМ" могу?
Насколько я понял т.к. в первом случае команда analoglWrite находится под условием. А во втором нет, но я не уверен. Ардуино и все выводы полностью исправны это проверенно отдельно. Проблема в скетче я думаю. При этом с командой digitalWrite такой проблемы нет.
Как исправить? Т.е. как сделать так, чтобы я мог подать ШИм сигнал в первом скетче "мотор2"?
!!! Вот скетч "мотор2" !!!
#include <Servo.h> // бодключаем биюлиотеку сервопривода Servo Servo1;; // Обозначаем номер сервопривода и их кол-во void setup() { Servo1.attach(11); // оповещаем ардуйни, что подключен сервопривод к 5 цифровому пину Servo1.write(90); // cтавим в изначальное нулевое положение pinMode(2, OUTPUT); // обозначаем вывод управляющего вывода для двигателя к 2 и 3(ШИМ), для драйвера L9110 pinMode(3, OUTPUT); // т.е. в данном слцчае на один двигатель по 2 управляющих вывода pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(7, OUTPUT); pinMode(6, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); Serial.begin(9600); // подключаем командную строку на скорости 9600 } void loop() { if (Serial.available() > 0) // это херота заставляет ардуйню проверять не появилось ли чего в буфере памяти { int a = Serial.read(); // когда в памяти что-то появилось, то мы создаем переменную "a" и присваиваем ей то что отправили по командной строке { if (a == 'W') digitalWrite(2,0); // если а = "W", то тогда на выводы подается сигнал от которого зависит скорость мотора(x) "условные 255" analogWrite(3,255); digitalWrite(4,0); analogWrite(5,255); digitalWrite(7,0); analogWrite(6,255); digitalWrite(8,0); analogWrite(9,255); if (a == 'V') digitalWrite(2,0); analogWrite(3,200); digitalWrite(4,0); analogWrite(5,200); digitalWrite(7,0); analogWrite(6,200); digitalWrite(8,0); analogWrite(9,200); if (a == 'v') digitalWrite(2,0); analogWrite(3,130); digitalWrite(4,0); analogWrite(5,130); digitalWrite(7,0); analogWrite(6,130); digitalWrite(8,0); analogWrite(9,130); if (a == 'w') digitalWrite(2,0); analogWrite(3,65); digitalWrite(4,0); analogWrite(5,65); digitalWrite(7,0); analogWrite(6,65); digitalWrite(8,0); analogWrite(9,65); if (a == 's') digitalWrite(2,1); analogWrite(3,150); digitalWrite(4,1); analogWrite(5,150); digitalWrite(7,1); analogWrite(6,150); digitalWrite(8,1); analogWrite(9,150); if (a == 'S') digitalWrite(2,1); analogWrite(3,10); digitalWrite(4,1); analogWrite(5,10); digitalWrite(7,1); analogWrite(6,10); digitalWrite(8,1); analogWrite(9,10); if (a == 'T') digitalWrite(2,0); analogWrite(3,0); digitalWrite(4,0); analogWrite(5,0); digitalWrite(7,0); analogWrite(6,0); digitalWrite(8,0); analogWrite(9,0); if (a == 'Y') Servo1.write(90); if (a == '0') Servo1.write(40); if (a == '1') Servo1.write(60); if (a == '2') Servo1.write(80); if (a == '3') Servo1.write(90); if (a == '4') Servo1.write(100); if (a == '5') Servo1.write(120); if (a == '6') Servo1.write(140); //Ставим на нужный угол от 40 до 140, т.к. сервопривод блять не может в 360 } } }
#include <Servo.h> // бодключаем биюлиотеку сервопривода Servo Servo1;; // Обозначаем номер сервопривода и их кол-во
void setup()
{
pinMode(2, выход);
pinMode(3, выход);
pinMode(4, выход);
pinMode(5, выход);
pinMode(7, выход);
pinMode(6, выход);
pinMode(8, выход);
pinMode(9, выход);
pinMode(10, выход);
pinMode(11, выход);
pinMode(12, выход);
pinMode(13, выход);
pinMode(A2, выход);
pinMode(A3, выход);
pinMode(A4, выход);
pinMode(A5, выход);
Serial.begin(9600); // подключаем командную строку на скорости 9600
}
void loop()
{
analogWrite(2120);
analogWrite(3,120);
analogWrite (4,120);
analogWrite (5120);
analogWrite (6,120);
analogWrite(7,120);
analogWrite(8,120);
analogWrite(9,120);
analogWrite(10,120);
analogWrite(11,120);
analogWrite(12,120);
analogWrite(13,120);
analogWrite(A2, 60);
analogWrite(A3, 60);
analogWrite(A4, 200);
analogWrite(A5, 200);
}
Я вот не вижу в Вашем скетче ни одного вызова analogWrite, который бы находился под условием.
Если Вы вот про это (и ему подобное по всему коду):
то, "под условием" здесь находится только строка №2. Строки же №№3-9 ни под каким условием не находятся и выполняются всегда, при каждом проходе loop.