Arduino Polska Forum

Pełna wersja: sds011 + arduino mega - problem
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam 

posiadam czujnik pyłu nova fitnes sds. czujnik podlaczam do arduino Uno r3 i wszystko dziala poprawnie. 
problem pojawia sie gdy czujnik podlaczam do Megi - wowczas nie są zczytywane wartosci . 

ze wzgledu ze w medze w porównaniu do uno jest kilka portów TX/RX podejrzewam ze tu jest problem, ale niestety nie moge sobie z nim poradzic. 
korzystam z gotowej biblioteki 

https://github.com/lewapek/sds-dust-sens...no-library

przy wykorzystaniu UNO podlaczam czujnik pod porty 0 i 1, odpowidnio deklarując w kodzie zmienne RxPin i TxPin
przy mega podlaczam czujnik do pinow 0 i 1 i niestety nie mam odczytów. 
docelowo chcialbym poslaczyc pod serial1 i piny 18 i 19 jednak nie potrafie zadeklarowac serial1 w skrypcie.
Pokaż kod to się pomyśli co nie tak Smile
(30-04-2019, 13:43)error105 napisał(a): [ -> ]Pokaż kod to się pomyśli co nie tak Smile
Kod:
#include "SdsDustSensor.h"

int rxPin = D1;
int txPin = D2;
SdsDustSensor sds(rxPin, txPin);

void setup() {
 Serial.begin(9600);
 sds.begin();

 Serial.println(sds.queryFirmwareVersion().toString()); // prints firmware version
 Serial.println(sds.setActiveReportingMode().toString()); // ensures sensor is in 'active' reporting mode
 Serial.println(sds.setContinuousWorkingPeriod().toString()); // ensures sensor has continuous working period - default but not recommended
}

void loop() {
 PmResult pm = sds.readPm();
 if (pm.isOk()) {
   Serial.print("PM2.5 = ");
   Serial.print(pm.pm25);
   Serial.print(", PM10 = ");
   Serial.println(pm.pm10);

   // if you want to just print the measured values, you can use toString() method as well
   Serial.println(pm.toString());
 } else {
   Serial.print("Could not read values from sensor, reason: ");
   Serial.println(pm.statusToString());
 }

 delay(500);
}
W podanym linku masz wyjaśnione, że biblioteka działa na softserial i piny mogą być dowolne. Ale nie powinny być to piny używane w kodzie do serial sprzętowego. W UNO więc to Ci nie powinno działać, albo przynajmniej robiłeś sieczkę na linii danych.
Jak masz mega to oczywiście byłoby lepiej korzystać  ze sprzętowego serial1 2 lub 3, jak biblioteka nie umie to pisać własne zmiany lub szukać innej.
dzieki. udalo sie. 
faktycznie na stronie jest wszystko tylko jakos przeoczylem
wystarczy 
Kod:
#include "SdsDustSensor.h"

//int rxPin = 19;
//int txPin = 18;
SdsDustSensor sds(Serial1);
odpowiednio polaczyc i 
Kod:
PM2.5 = 5.80, PM10 = 28.40
pm25: 5.80, pm10: 28.40

dzieki za pomoc.
pzdr.
(01-05-2019, 18:33)user10 napisał(a): [ -> ]dzieki. udalo sie. 
faktycznie na stronie jest wszystko tylko jakos przeoczylem
wystarczy 
Kod:
#include "SdsDustSensor.h"

//int rxPin = 19;
//int txPin = 18;
SdsDustSensor sds(Serial1);
odpowiednio polaczyc i 
Kod:
PM2.5 = 5.80, PM10 = 28.40
pm25: 5.80, pm10: 28.40

dzieki za pomoc.
pzdr.

Czy mógłbym Cie prosić o wklejenie całego kodu? Mam dokładnie ten sam problem ale nadal nie działa poprawnie..