• 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
Arduino Due pimode brak reakcji
#1
Powitać!
podłączyłem diody RGB i chciałem by po wprowadzeniu na pin stanu wysokiego, one się wyłączały. Lecz arduino cały czas widzi stan wysoki bez względu na deklaracje w programie. Wprowadzam napięcie bezpośrednio z zasilacza 5V.

Kod:
   #include <Adafruit_NeoPixel.h>
   
   #define LICZBADIOD 43
   #define PIN 13
  const int inPin = 2;
 
   Adafruit_NeoPixel LED = Adafruit_NeoPixel(43, 13, NEO_GRB + NEO_KHZ800);

   void setup()
   {
       Serial.begin(9600);
     LED.begin(); // Inicjalizacja biblioteki
     pinMode(inPin, INPUT_PULLUP);
      digitalWrite(inPin, LOW);
}  
   void loop()
  {
if (digitalRead(inPin) == HIGH){
       for(int i=0; i<LICZBADIOD; i++)
       {        
       LED.setPixelColor(i, 255,255,255);
       LED.show();
       delay(50);
        }
 }
}
 
Odpowiedź
#2
Bo masz podciągnięty pin do VCC.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#3
Due jest na 3,3V, podłączenie 5V może je zniszczyć.    
Ze specyfikacji na stronie Arduino:
"Each of the 54 digital pins on the Due can be used as an input or output, using pinMode(),digitalWrite(), and digitalRead() functions. They operate at 3.3 volts. Each pin can provide (source) a current of 3 mA or 15 mA, depending on the pin, or receive (sink) a current of 6 mA or 9 mA, depending on the pin. They also have an internal pull-up resistor (disconnected by default) of 100 KOhm. In addition, some pins have specialized functions:"
"Analog Inputs: pins from A0 to A11  The Due has 12 analog inputs, each of which can provide 12 bits of resolution (i.e. 4096 different values). By default, the resolution of the readings is set at 10 bits, for compatibility with other Arduino boards. It is possible to change the resolution of the ADC withanalogReadResolution(). The Due’s analog inputs pins measure from ground to a maximum value of 3.3V. Applying more than 3.3V on the Due’s pins will damage the SAM3X chip. The analogReference() function is ignored on the Due."
https://forum.arduino.cc/index.php?topic=132130.0 tu też  znajdziesz o tym info na pinout.
Jeśli jeszcze nie usmażyłeś procka, to :
pinMode(inPin, INPUT_PULLUP); robi odwrotnie do tego - digitalWrite(inPin, LOW), no prawie. Przynajmniej w UNO to INPUT_PULLUP to jest to samo co osobno ustawienie jako INPUT a potem wpisanie 1 poleceniem digitalWrite(inPIN,HIGH). Więcej o tym tu https://www.arduino.cc/en/Tutorial/DigitalPins .
Najczęściej i najbezpieczniej jest ustawiać pinMode(inPin, INPUT_PULLUP); a klawisz dołączać do masy. Masą trudniej usmażyć procka gdy pin jest ustawiony na input. Ustawienie stanu przeciwnego po puszczeniu przycisku zapewnia napięcie Arduino przez wewnętrzny rezystor podciągający do VCC - samo nie zrobi sobie kuku. Gdy ma być wyjściem musisz zadbać, by prąd pobierany nie był większy niż możliwości pinów, a te są różne dla różnych pinów w DUE i różne dla opcji czy prąd wypływa czy wpływa. W szczególności ustawienie pinu jako wyjścia, wpisanie do niego 1 (HIGH) i podłączenie pinu do masy może go usmażyć. Dlatego domyślnie po uruchomieniu piny są wejściami. Każdy moduł Arduino (zależy od procka) ma swoje widzimisię w tym temacie.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości