Liczba postów: 6
Liczba wątków: 3
Dołączył: Apr 2023
Reputacja:
0
Potrzebuję porady w temacie komunikacji szeregowej Arduino Nano mam komunikację szeregową na pinach 8-Rx , 9-Tx działa mi prawidłowo. Potrzebuję odzyskać te 2 cyfrowe piny. Mam wolne piny 0-Rx 1-Tx i tam się przepinam zmieniam w programie Rx PIn =0, Tx Pin =1 i niestety nie działa.
Liczba postów: 168
Liczba wątków: 0
Dołączył: Dec 2021
Reputacja:
15
Jakiś kawałek kodu poprosimy.
Skoro komunikację w NANO masz na pinach 8 i 9 to pewnie używasz SoftwareSerial. Na pinach 0 i 1 masz serial hardware'owy i być może konieczne są zmiany w kodzie.
Dodatkowo piny 0 i 1 są współdzielone ze złączem USB Arduino, więc jeżeli w trakcie komunikacji działasz np. na monitorze portu szeregowego to już tych pinów (0 i 1) nie wykorzystasz.
Liczba postów: 6
Liczba wątków: 3
Dołączył: Apr 2023
Reputacja:
0
Dziękuję za odpowiedź, program ma możliwość komunikowania się przez USB, czyli muszę zmienić coś innego bo 0 i 1 są zajęte do komunikacji USB. Kombinuje bo potrzebuje odzyskac piny do i2c (SDA i SCL).
Brakuje mi wejść cyfrowych i chcę podłączyć expander PCF8575...
Liczba postów: 67
Liczba wątków: 1
Dołączył: Aug 2018
Reputacja:
7
Ale 9 i 8 to nie są piny I2C, do tego są piny A4 i A5, albo nawet zdublowane i wyciągnięte osobno (choć dalej to to samo co A4 i A5, są z nimi zwarte ścieżki), do softserial najczęściej są używane piny 2 i 3, bo to przerwania zewnętrzne. Jak masz za mało pinów to sięgnij po inną płytkę Arduino, Leonardo/MICRO ma osobny sprzętowy serial na pinach 0 i 1, zadziała to dużo lepiej, do komunikacji z komputerem ma osobny USB. W NANO/UNO USB jest podłączony do jedynego sprzętowego SERIAL w uC. W MEGA masz 4 UART sprzętowe, pierwszy jak w UNO do USB, ale pozostałe 3 są wolne.
Poza tym piny analogowe to też piny cyfrowe, funkcja analogowa to tylko taki dodatek do zwykłego IO, czyli masz jeszcze 4 wolne A0-A3 nie licząc tych do I2C.
Na NANO czasami są jeszcze wyprowadzone piny A6 i A7, te są tylko analogowe (czasami też na klonach UNO są wyprowadzone gdzieś na środku płytki, jak uC jest w obudowie SMD to ma te piny dostępne, te wersje w DIP28, "prostokącik", nie mają A6-7).
Liczba postów: 6
Liczba wątków: 3
Dołączył: Apr 2023
Reputacja:
0
Wiem ,że przejście na Mega etc. daje znacznie większe możliwości ale nie będę zmieniał dołożyłem płytkę PCF8575 bo potrzebuje dodać jedną funkcjonalność do urządzenia które działa kilka lat bezbłędnie.
Pozamieniałem konfiguracje pinów , ta że stara część mi działa zwolniłem i2c (oczywiście A4-A5) i potrzebuję 6 wyjść cyfrowych przenieść na PCF8575.
Sprzętowo mam układ rozpracowany gorzej z kodem bo to nie moja bajka...
Liczba postów: 6
Liczba wątków: 3
Dołączył: Apr 2023
Reputacja:
0
Dodałem:
#include <PCF8575.h> //Expander portów I/O
#include <Wire.h>
PCF8575.begin(0x20);
Jak powinienem zmienić konfigurację pinów
Tak mam jak były podłączone bezpośrednio do Arduino
const byte antpin_1 = 5;
const byte antpin_2 = 12;
const byte antpin_3 = 10;
const byte antpin_4 = 11;
const byte antpin_5 = 7;
const byte antpin_6 = 6;
const byte auxpin = 13;
const byte autopin = 4;
digitalWrite(antpin_1,HIGH);
digitalWrite(antpin_2,HIGH);
digitalWrite(antpin_3,HIGH);
digitalWrite(antpin_4,HIGH);
digitalWrite(antpin_5,HIGH);
digitalWrite(antpin_6,HIGH);
digitalWrite(auxpin,HIGH);
pinMode(antpin_1, OUTPUT);
pinMode(antpin_2, OUTPUT);
pinMode(antpin_3, OUTPUT);
pinMode(antpin_4, OUTPUT);
pinMode(antpin_5, OUTPUT);
pinMode(antpin_6, OUTPUT);
pinMode(auxpin, OUTPUT);
digitalWrite(antpin_1,HIGH);
digitalWrite(antpin_2,HIGH);
digitalWrite(antpin_3,HIGH);
digitalWrite(antpin_4,HIGH);
digitalWrite(antpin_5,HIGH);
digitalWrite(antpin_6,HIGH);
digitalWrite(auxpin,HIGH);
Potrzebuję zmienić na PCF8575 np: P1,P2----P6
Liczba postów: 67
Liczba wątków: 1
Dołączył: Aug 2018
Reputacja:
7
W swojej bibliotece masz pewnie przykłady, np. u mnie jest tak:
expander.begin(0x20);
expander.pinMode(2, OUTPUT);
expander.pinMode(3, INPUT_PULLUP);
i potem w loop mniej więcej tak:
expander.digitalWrite(2, HIGH); // Turn off led 2
delay(500);
expander.digitalWrite(2, LOW); // Turn on led 2
Zwróć tylko uwagę na odwróconą logikę, ktoś kto robił bibliotekę podłączył sobie led tak, by stan niski ją zaświecał, tu nie jest jak w Arduino, że w obie strony popłynie taki sam prąd, jak płynie do PCF z leda to są miliampery, a jak do leda to tylko można wydolić mikroampery.
Przeczytaj datasheet ekpandera.