• 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
Pomoc w znalezieniu błędu w kodzie
#11
Przecież w przykładzie Blink jest wpisana taka linijka, w sekcji setup{} . Dopisz tak samo, w setup na samym początku. Nie ma jednak gwarancji, że biblioteka/funkcja nie robi tego gdzieś sobie wewnątrz swojego kodu, w dodatku ustawiając jako wejście. Tutaj chyba nie masz biblioteki, jak już masz pewność, który to pin to wpisz to na początku setup.


Co do zasady takie ustawienie robi się raz (chyba że później ktoś odwraca funkcję pinu) i przed pierwszym użyciem funkcji digitalWrite(naTymPinie).

Istotne jest by ustawiać pin jako wyjście dopiero wtedy, gdy wiesz co do niego podłączasz. Dlatego wszystkie są ustawione jako wejścia po resecie. Jak ustawisz pin podłączony do GND jako wyjście i wpiszesz tu 1 to zrobisz zwarcie VCC-GND, które skończy się zapewne uszkodzeniem. Tak samo wpisując 0 do pinu podłączonego do VCC. To się może zdarzyć np. jak masz przycisk podpięty do jakiegoś pinu źle opisanego.

Bawiłem się kiedyś czujnikiem Sharp i mam skądś taki kod (pasuje do UNO, NANO, itp, używa wewnętrznego Vref 1.1V, dane wysyła na OLED I2C i UART, działa):
Kod:
/*
Standalone Sketch to use with a Arduino UNO and a
Sharp Optical Dust Sensor GP2Y1010AU0F
*/
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define deltaTime   40
#define sleepTime   9680
#define samplingTime   280
#define OLED_RESET 25 //nie wiem po co reset przy i2c

const int smockPIN = A0; //wyjscie analogowe czujnika dymu
const int smockLed = 7;   //Zasilanie led czujnika dymu
Adafruit_SSD1306 display(OLED_RESET);


uint32_t   smockADC ;
uint32_t   smockV  ;
uint32_t smockResult ;

void setup(){
 analogReference(INTERNAL); //nalezy zrobić dzielnik rezystorowy, np. 10k do GND i 42k do VCC 3344mV=553 adc
 Serial.begin(115200);
 pinMode(smockLed,OUTPUT);
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  
 display.clearDisplay();
 display.setTextSize(1);
 display.setTextColor(WHITE);
 display.setCursor(0,0);
 display.println(F("Hello, world!"));
 display.setTextSize(2);
 display.println(3.141592,5);
   display.display();
     delay(2000);
}

void loop(){
 
 digitalWrite(smockLed,LOW); // power on the LED
 delayMicroseconds(samplingTime);
 smockADC =0;
for(int i=0;i<4;i++)
{
 smockADC += analogRead(smockPIN); // read the dust value
 
}
smockADC=smockADC/4;
 delayMicroseconds(deltaTime);
 digitalWrite(smockLed,HIGH); // turn the LED off
 delayMicroseconds(sleepTime);

 // 0 - 5V mapped to 0 - 1023 integer values
 // recover voltage
 smockV = smockADC * 3344 / 553;

 // linear eqaution taken from http://www.howmuchsnow.com/arduino/airquality/

 smockResult = (17 * smockV)/100; //-100

 Serial.print("Pomiar ADC (0-4095): ");
 Serial.print(smockADC);

 Serial.print(" - Voltage: ");
 Serial.print(smockV);

 Serial.print(" - Dust Density: ");
 Serial.println(smockResult); // unit: ug/m3

display.clearDisplay();
 display.drawRect(0, 0, display.width(), display.height(), WHITE);
 display.setTextSize(1);
 display.setTextColor(WHITE);
 display.setCursor(3,1);
 display.println("Miernik dymu (ug/m3)");
 display.setTextSize(2);
// display.setTextColor(BLACK, WHITE); // 'inverted' text
 display.print(" ");
 display.print(smockResult);
 display.setTextSize(1);
display.println(" ug/m3");
/*  display.setTextColor(WHITE);
display.setTextSize(1);
display.print(" ");
display.print(analogRead(sensorPin));
display.print("J - ");
display.print( sensorValue/100);
display.print(".");
display.print( sensorValue%100);
display.println(" V");
//display.println("J - ");
*/
 display.display();


 delay(1000);
}
Pewnie przerobiny jest stąd: http://arduinodev.woofex.net/2012/12/01/...st-sensor/ .
Zanim zaczniesz to gdziekolwiek wysyłać po WIFI powinieneś mieć pewność, że sam czujnik działa prawidłowo, najprościej stosując odczyt po UART. Dopiero potem dokłada się kolejne cegiełki programu.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
Pomoc w znalezieniu błędu w kodzie - przez dawidd - 01-09-2018, 14:44
RE: Pomoc w znalezieniu błędu w kodzie - przez es2 - 01-09-2018, 19:58
RE: Pomoc w znalezieniu błędu w kodzie - przez es2 - 01-09-2018, 21:00
RE: Pomoc w znalezieniu błędu w kodzie - przez kaczakat - 02-09-2018, 12:16
RE: Pomoc w znalezieniu błędu w kodzie - przez es2 - 02-09-2018, 12:41
RE: Pomoc w znalezieniu błędu w kodzie - przez es2 - 02-09-2018, 21:47

Skocz do:


Przeglądający: 1 gości