Sketch a napięcie - danielpro - 01-08-2018
Witam,
mam następujący problem z arduino. Stworzyłem sketch, który kombinację wejść przerobi mi na konkretne wyjścia.
Problem polega na tym, że napięcie jakie mi wychodzi to ok 1V. A potrzebowałbym 5V.
Nie wiem, czy to jest błąd w moim sketchu, ale jak biorę przykład Button Input PullUp to napięcie podaje właściwe.
Poniżej przesyłam mój sketch. Byłbym wdzięczy, gdyby ktoś wskazał mi problem. Z góry dziękuję!
Kod: void setup() {
pinMode(46, OUTPUT); // 1
pinMode(2, INPUT_PULLUP);
digitalWrite(46, LOW);
pinMode(47, OUTPUT); // 2
pinMode(3, INPUT_PULLUP);
digitalWrite(47, LOW);
pinMode(46, OUTPUT); // 3
pinMode(47, OUTPUT);
pinMode(4, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(47, LOW);
pinMode(48, OUTPUT); // 4
pinMode(5, INPUT_PULLUP);
digitalWrite(48, LOW);
pinMode(46, OUTPUT); // 5
pinMode(48, OUTPUT);
pinMode(6, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(48, LOW);
pinMode(47, OUTPUT); // 6
pinMode(48, OUTPUT);
pinMode(7, INPUT_PULLUP);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
pinMode(46, OUTPUT); // 7
pinMode(47, OUTPUT);
pinMode(48, OUTPUT);
pinMode(8, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
pinMode(49, OUTPUT); // 8
pinMode(9, INPUT_PULLUP);
digitalWrite(49, LOW);
pinMode(46, OUTPUT); // 9
pinMode(49, OUTPUT);
pinMode(10, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(49, LOW);
pinMode(47, OUTPUT); // 10
pinMode(49, OUTPUT);
pinMode(11, INPUT_PULLUP);
digitalWrite(47, LOW);
digitalWrite(49, LOW);
pinMode(46, OUTPUT); // 11
pinMode(47, OUTPUT);
pinMode(49, OUTPUT);
pinMode(12, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(49, LOW);
pinMode(48, OUTPUT); // 12
pinMode(49, OUTPUT);
pinMode(13, INPUT_PULLUP);
digitalWrite(48, LOW);
digitalWrite(49, LOW);
pinMode(46, OUTPUT); // 13
pinMode(48, OUTPUT);
pinMode(49, OUTPUT);
pinMode(14, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(49, LOW);
pinMode(47, OUTPUT); // 14
pinMode(48, OUTPUT);
pinMode(49, OUTPUT);
pinMode(15, INPUT_PULLUP);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(49, LOW);
pinMode(46, OUTPUT); // 15
pinMode(47, OUTPUT);
pinMode(48, OUTPUT);
pinMode(49, OUTPUT);
pinMode(16, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(49, LOW);
pinMode(50, OUTPUT); // 16
pinMode(17, INPUT_PULLUP);
digitalWrite(50, LOW);
pinMode(46, OUTPUT); // 17
pinMode(50, OUTPUT);
pinMode(18, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(50, LOW);
pinMode(47, OUTPUT); // 18
pinMode(50, OUTPUT);
pinMode(19, INPUT_PULLUP);
digitalWrite(47, LOW);
digitalWrite(50, LOW);
pinMode(46, OUTPUT); // 19
pinMode(47, OUTPUT);
pinMode(50, OUTPUT);
pinMode(20, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(50, LOW);
pinMode(48, OUTPUT); // 20
pinMode(50, OUTPUT);
pinMode(21, INPUT_PULLUP);
digitalWrite(48, LOW);
digitalWrite(50, LOW);
pinMode(46, OUTPUT); // 21
pinMode(48, OUTPUT);
pinMode(50, OUTPUT);
pinMode(22, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(48, LOW);
digitalWrite(50, LOW);
pinMode(47, OUTPUT); // 22
pinMode(48, OUTPUT);
pinMode(50, OUTPUT);
pinMode(23, INPUT_PULLUP);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(50, LOW);
pinMode(46, OUTPUT); // 23
pinMode(47, OUTPUT);
pinMode(48, OUTPUT);
pinMode(50, OUTPUT);
pinMode(24, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(50, LOW);
pinMode(49, OUTPUT); // 24
pinMode(50, OUTPUT);
pinMode(25, INPUT_PULLUP);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
pinMode(46, OUTPUT); // 25
pinMode(49, OUTPUT);
pinMode(50, OUTPUT);
pinMode(26, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
pinMode(47, OUTPUT); // 26
pinMode(49, OUTPUT);
pinMode(50, OUTPUT);
pinMode(27, INPUT_PULLUP);
digitalWrite(47, LOW);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
pinMode(46, OUTPUT); // 27
pinMode(47, OUTPUT);
pinMode(49, OUTPUT);
pinMode(50, OUTPUT);
pinMode(28, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
pinMode(48, OUTPUT); // 28
pinMode(50, OUTPUT);
pinMode(29, INPUT_PULLUP);
digitalWrite(48, LOW);
digitalWrite(50, LOW);
pinMode(48, OUTPUT); // 29
pinMode(49, OUTPUT);
pinMode(50, OUTPUT);
pinMode(30, INPUT_PULLUP);
digitalWrite(48, LOW);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
pinMode(47, OUTPUT); // 30
pinMode(48, OUTPUT);
pinMode(49, OUTPUT);
pinMode(50, OUTPUT);
pinMode(31, INPUT_PULLUP);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
pinMode(46, OUTPUT); // 31
pinMode(47, OUTPUT);
pinMode(48, OUTPUT);
pinMode(49, OUTPUT);
pinMode(50, OUTPUT);
pinMode(32, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
pinMode(51, OUTPUT); // 32
pinMode(33, INPUT_PULLUP);
digitalWrite(51, LOW);
pinMode(46, OUTPUT); // 33
pinMode(51, OUTPUT);
pinMode(34, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(51, LOW);
pinMode(47, OUTPUT); // 34
pinMode(51, OUTPUT);
pinMode(35, INPUT_PULLUP);
digitalWrite(47, LOW);
digitalWrite(51, LOW);
pinMode(46, OUTPUT); // 35
pinMode(47, OUTPUT);
pinMode(51, OUTPUT);
pinMode(36, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(51, LOW);
pinMode(48, OUTPUT); // 36
pinMode(51, OUTPUT);
pinMode(37, INPUT_PULLUP);
digitalWrite(48, LOW);
digitalWrite(51, LOW);
pinMode(46, OUTPUT); // 37
pinMode(48, OUTPUT);
pinMode(51, OUTPUT);
pinMode(38, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(48, LOW);
digitalWrite(51, LOW);
pinMode(47, OUTPUT); // 38
pinMode(48, OUTPUT);
pinMode(51, OUTPUT);
pinMode(39, INPUT_PULLUP);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(51, LOW);
pinMode(46, OUTPUT); // 39
pinMode(47, OUTPUT);
pinMode(48, OUTPUT);
pinMode(51, OUTPUT);
pinMode(40, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(51, LOW);
pinMode(49, OUTPUT); // 40
pinMode(51, OUTPUT);
pinMode(41, INPUT_PULLUP);
digitalWrite(49, LOW);
digitalWrite(51, LOW);
pinMode(46, OUTPUT); // 41
pinMode(49, OUTPUT);
pinMode(51, OUTPUT);
pinMode(42, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(49, LOW);
digitalWrite(51, LOW);
pinMode(47, OUTPUT); // 42
pinMode(49, OUTPUT);
pinMode(51, OUTPUT);
pinMode(43, INPUT_PULLUP);
digitalWrite(47, LOW);
digitalWrite(49, LOW);
digitalWrite(51, LOW);
}
void loop()
{
if (digitalRead(2) == LOW) { // 1
digitalWrite(46, HIGH);
} else {
digitalWrite(46, LOW);
if (digitalRead(3) == LOW) { // 2
digitalWrite(47, HIGH);
} else {
digitalWrite(47, LOW);
if (digitalRead(4) == LOW) { // 3
digitalWrite(46, HIGH);
digitalWrite(47, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(47, LOW);
if (digitalRead(5) == LOW) { // 4
digitalWrite(48, HIGH);
} else {
digitalWrite(48, LOW);
if (digitalRead(6) == LOW) { // 5
digitalWrite(46, HIGH);
digitalWrite(48, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(48, LOW);
if (digitalRead(7) == LOW) { // 6
digitalWrite(47, HIGH);
digitalWrite(48, HIGH);
} else {
digitalWrite(47, LOW);
digitalWrite(48, LOW);
if (digitalRead(8) == LOW) { // 7
digitalWrite(46, HIGH);
digitalWrite(47, HIGH);
digitalWrite(48, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
if (digitalRead(9) == LOW) { // 8
digitalWrite(49, HIGH);
} else {
digitalWrite(49, LOW);
if (digitalRead(10) == LOW) { // 9
digitalWrite(46, HIGH);
digitalWrite(49, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(49, LOW);
if (digitalRead(11) == LOW) { // 10
digitalWrite(47, HIGH);
digitalWrite(49, HIGH);
} else {
digitalWrite(47, LOW);
digitalWrite(49, LOW);
if (digitalRead(12) == LOW) { // 11
digitalWrite(46, HIGH);
digitalWrite(47, HIGH);
digitalWrite(49, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(49, LOW);
if (digitalRead(13) == LOW) { // 12
digitalWrite(48, HIGH);
digitalWrite(49, HIGH);
} else {
digitalWrite(48, LOW);
digitalWrite(49, LOW);
if (digitalRead(14) == LOW) { // 13
digitalWrite(46, HIGH);
digitalWrite(48, HIGH);
digitalWrite(49, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(48, LOW);
digitalWrite(49, LOW);
if (digitalRead(15) == LOW) { // 14
digitalWrite(47, HIGH);
digitalWrite(48, HIGH);
digitalWrite(49, HIGH);
} else {
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(49, LOW);
if (digitalRead(16) == LOW) { // 15
digitalWrite(46, HIGH);
digitalWrite(47, HIGH);
digitalWrite(48, HIGH);
digitalWrite(49, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(49, LOW);
if (digitalRead(17) == LOW) { // 16
digitalWrite(50, HIGH);
} else {
digitalWrite(50, LOW);
if (digitalRead(18) == LOW) { // 17
digitalWrite(46, HIGH);
digitalWrite(50, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(50, LOW);
if (digitalRead(19) == LOW) { // 18
digitalWrite(47, HIGH);
digitalWrite(50, HIGH);
} else {
digitalWrite(47, LOW);
digitalWrite(50, LOW);
if (digitalRead(20) == LOW) { // 19
digitalWrite(46, HIGH);
digitalWrite(47, HIGH);
digitalWrite(50, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(50, LOW);
if (digitalRead(21) == LOW) { // 20
digitalWrite(48, HIGH);
digitalWrite(50, HIGH);
} else {
digitalWrite(48, LOW);
digitalWrite(50, LOW);
if (digitalRead(22) == LOW) { // 21
digitalWrite(46, HIGH);
digitalWrite(48, HIGH);
digitalWrite(50, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(48, LOW);
digitalWrite(50, LOW);
if (digitalRead(23) == LOW) { // 22
digitalWrite(47, HIGH);
digitalWrite(48, HIGH);
digitalWrite(50, HIGH);
} else {
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(50, LOW);
if (digitalRead(24) == LOW) { // 23
digitalWrite(46, HIGH);
digitalWrite(47, HIGH);
digitalWrite(48, HIGH);
digitalWrite(50, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(50, LOW);
if (digitalRead(25) == LOW) { // 24
digitalWrite(49, HIGH);
digitalWrite(50, HIGH);
} else {
digitalWrite(49, LOW);
digitalWrite(50, LOW);
if (digitalRead(26) == LOW) { // 25
digitalWrite(46, HIGH);
digitalWrite(49, HIGH);
digitalWrite(50, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
if (digitalRead(27) == LOW) { // 26
digitalWrite(47, HIGH);
digitalWrite(49, HIGH);
digitalWrite(50, HIGH);
} else {
digitalWrite(47, LOW);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
if (digitalRead(28) == LOW) { // 27
digitalWrite(46, HIGH);
digitalWrite(47, HIGH);
digitalWrite(49, HIGH);
digitalWrite(50, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
if (digitalRead(29) == LOW) { // 28
digitalWrite(48, HIGH);
digitalWrite(49, HIGH);
digitalWrite(50, HIGH);
} else {
digitalWrite(48, LOW);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
if (digitalRead(30) == LOW) { // 29
digitalWrite(46, HIGH);
digitalWrite(48, HIGH);
digitalWrite(49, HIGH);
digitalWrite(50, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(48, LOW);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
if (digitalRead(31) == LOW) { // 30
digitalWrite(47, HIGH);
digitalWrite(48, HIGH);
digitalWrite(49, HIGH);
digitalWrite(50, HIGH);
} else {
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
if (digitalRead(32) == LOW) { // 31
digitalWrite(46, HIGH);
digitalWrite(47, HIGH);
digitalWrite(48, HIGH);
digitalWrite(49, HIGH);
digitalWrite(50, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
if (digitalRead(33) == LOW) { // 32
digitalWrite(51, HIGH);
} else {
digitalWrite(51, LOW);
if (digitalRead(34) == LOW) { // 33
digitalWrite(46, HIGH);
digitalWrite(51, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(51, LOW);
if (digitalRead(35) == LOW) { // 34
digitalWrite(47, HIGH);
digitalWrite(51, HIGH);
} else {
digitalWrite(47, LOW);
digitalWrite(51, LOW);
if (digitalRead(36) == LOW) { // 35
digitalWrite(46, HIGH);
digitalWrite(47, HIGH);
digitalWrite(51, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(51, LOW);
if (digitalRead(37) == LOW) { // 36
digitalWrite(48, HIGH);
digitalWrite(51, HIGH);
} else {
digitalWrite(48, LOW);
digitalWrite(51, LOW);
if (digitalRead(38) == LOW) { // 37
digitalWrite(46, HIGH);
digitalWrite(48, HIGH);
digitalWrite(51, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(48, LOW);
digitalWrite(51, LOW);
if (digitalRead(39) == LOW) { // 38
digitalWrite(47, HIGH);
digitalWrite(48, HIGH);
digitalWrite(51, HIGH);
} else {
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(51, LOW);
if (digitalRead(40) == LOW) { // 39
digitalWrite(46, HIGH);
digitalWrite(47, HIGH);
digitalWrite(48, HIGH);
digitalWrite(51, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(51, LOW);
if (digitalRead(41) == LOW) { // 40
digitalWrite(49, HIGH);
digitalWrite(51, HIGH);
} else {
digitalWrite(49, LOW);
digitalWrite(51, LOW);
if (digitalRead(42) == LOW) { // 41
digitalWrite(46, HIGH);
digitalWrite(49, HIGH);
digitalWrite(51, HIGH);
} else {
digitalWrite(46, LOW);
digitalWrite(49, LOW);
digitalWrite(51, LOW);
if (digitalRead(43) == LOW) { // 42
digitalWrite(47, HIGH);
digitalWrite(49, HIGH);
digitalWrite(51, HIGH);
} else {
digitalWrite(47, LOW);
digitalWrite(49, LOW);
digitalWrite(51, LOW);
}
RE: Sketch a napięcie - Robson Kerman - 01-08-2018
Nie trzeba powtarzać kolejno po sobie takich instrukcji jak na przykład:
digitalWrite(47, LOW);
i tak kilkadziesiąt razy to samo.
Wystarczy raz ustawić pin na LOW i on taki pozostanie do momentu, aż zmienisz go na HIGH.
Po drugie nie musisz ręcznie wpisywać po kolei
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP); itd.
Skoro są po kolei, to możesz to zrobić w pętli.
Według mnie setup powinien wyglądać tak:
Kod: void setup() {
for (uint8_t x = 2; x <= 43; x++){
pinMode(x, INPUT_PULLUP);
}
for (uint8_t x = 46; x <= 51; x++){
pinMode(x, OUTPUT);
digitalWrite(x, LOW);
}
}
Reszty kodu nie chciało mi się czytać. Być może dla tego, że jest nie czytelny.
A odpowiedź na Twoje pytanie:
(01-08-2018, 15:30)danielpro napisał(a): Problem polega na tym, że napięcie jakie mi wychodzi to ok 1V. A potrzebowałbym 5V. Pewnie mierzyłeś miernikiem, a stany na wyjściach zmieniają się tak szybko, że miernik nie nadąża.
Użyj oscyloskopu, a przekonasz się, że napięcie wynosi równiutko 5V.
RE: Sketch a napięcie - danielpro - 01-08-2018
Tak, mierzyłem miernikiem. Z przykładowym sketchem "DigitalInputPullup" napięcie wyjściowe mam prawie 5V, więc jest ok. Ze skeczem, który zrobiłem samemu na pojedynczym wyjściu mam 5V, ale na tych, które jedno wejście przerabiają na dwa wyjścia, na każdym mam lekko ponad 1V.
RE: Sketch a napięcie - kaczakat - 01-08-2018
Problemem jest programista:
Kod: void setup() {
pinMode(46, OUTPUT); // 1
pinMode(2, INPUT_PULLUP);
digitalWrite(46, LOW);
pinMode(47, OUTPUT); // 2
pinMode(3, INPUT_PULLUP);
digitalWrite(47, LOW);
pinMode(46, OUTPUT); // 3
pinMode(47, OUTPUT);
pinMode(4, INPUT_PULLUP);
digitalWrite(46, LOW);
digitalWrite(47, LOW);
Po tym początku już wiem, że nie wiesz co robisz. Przeczytaj książkę, zrób kurs Arduino https://forbot.pl/blog/kurs-arduino-podstawy-programowania-spis-tresci-kursu-id5290 , pooglądaj tutoriale na youtubie. Twój post tu nie ma żadnego sensu z tym poziomem wiedzy. Arduino jest wyjątkowo przyjazne na początek, ale tu też czegoś trzeba się nauczyć by pisać programy.
|