• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Serial problem
#1
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.
 
Odpowiedź
#2
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.
 
Odpowiedź
#3
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...
 
Odpowiedź
#4
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).
 
Odpowiedź
#5
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...
 
Odpowiedź
#6
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
 
Odpowiedź
#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.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości