-
IT café
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
gyapo11
őstag
válasz #96292352 #1139 üzenetére
Nem volt még a kezemben ilyen szenzor, de mit értesz azon, hogy egyszerre? Az arduino sorban hajtja végre az utasításokat, egyszerre nem lehet csinálni vele két dolgot.
menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
gyapo11
őstag
válasz #96292352 #1143 üzenetére
Ja hogy az egyszerre az egy kijelzőre két értéket jelent. Ebben nem tudok segíteni, nem használtam még kijelzőt sem, de ha áttekinthetőbbé tennéd tagolással, megjegyzésekkel a programot, akkor talán valaki észrevenné a hibát vagy a megoldást.
Mi történik? Egyesével ki tudod íratni, tehát a beolvasás és a kiírás megy. Vagy valami pozícionálási gond lehet a kijelzőn, vagy a második értéket ugyanabba a változóba olvasod, és ezért nincs meg az első.menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
#96292352
törölt tag
válasz #96292352 #1146 üzenetére
Ebben van a baj:
int DHpin = 7;
int DH2pin = 9;
byte dat [5];
byte dat2 [5];
byte read_data () {
byte data;
for (int l = 0; l < 8; l ++) {
if (digitalRead (DHpin) == LOW) {
while (digitalRead (DHpin) == LOW); // wait for 50us
delayMicroseconds (30); // determine the duration of the high level to determine the data is '0 'or '1'
if (digitalRead (DHpin) == HIGH)
data |= (1 << (7-l)); // high front and low in the post
while (digitalRead (DHpin) == HIGH); // data '1 ', wait for the next one receiver
}
}/* 2nd sensor */
byte dat2;
for (int i = 0; i < 8; i ++) {
if (digitalRead (DH2pin) == LOW) {
while (digitalRead (DH2pin) == LOW); // wait for 50us
delayMicroseconds (30); // determine the duration of the high level to determine the data is '0 'or '1'
if (digitalRead (DH2pin) == HIGH)
data |= (1 << (7-i)); // high front and low in the post
while (digitalRead (DH2pin) == HIGH); // data '1 ', wait for the next one receiver
}
}
return data;
} -
dave0825
őstag
válasz #96292352 #1147 üzenetére
Más téma: egyik haverom vett ebay-ről egy Uno klónt, és most néztem neki, hogy 12000 van ráírva az órajel-generátorára, viszont a hirdetésben Atmega16U2 van, ami (én úgy tudom, meg leírást is úgy találtam) 16MHz-es lenne, nem? A képen a hirdetésben tényleg 12000 van ráírva, viszont a neve sem ugyanaz a panelnak, mint a képen, csak UNO van ráírva, semmi más "márka". Szerintetek kezdő arduinózónak mennyit számít, ha ennyivel kevesebb az órajele? Szervomotorok vezérléséhez, ledek villogtatásához, meg ilyen alapabb dolgokhoz elég a 12MHz?
Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99
-
softguner
csendes tag
válasz #96292352 #1152 üzenetére
Szerintem, ez a kód így eleve nehézkes. Van egy DHT library az arduino.cc-n. Ott létrehozol két objektumot és definiálod azokat két különböző néven.
Ebben van egy példaprogram. Ez a kódja.
#include "DHT.h"
#define DHTPIN 2 // what pin we're connected to
// Uncomment whatever type you're using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors. This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");
dht.begin();
}Itt Definiálod a változókat a beolvasott lábakat. Stb stb.
Pl:
#define DHTPIN 2
#define DHTPINSEC 3
DHT dht(DHTPIN, DHTTYPE);
DHT dhtsec(DHTPINSEC, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");
dht.begin();
dhtsec.begin();
}És a többi és a többi. Én ezt csinálnám.
-
softguner
csendes tag
válasz #96292352 #1182 üzenetére
Ezen a szinten ennek azért már kisujjból kellene mennie.
int buttonpin = 13;
int buttonpin1 = 12;
int value =0;
int value2 =0;
int adat=0;
void setup ()
{
pinMode(buttonpin, INPUT);
pinMode(buttonpin1, INPUT);
Serial.begin (9600);
}
void loop ()
{
value = digitalRead (buttonpin);
if (value == 1)
{
adat=adat+1;
}
else
{
value2 = digitalRead (buttonpin1);
if (value2 == 1)
{
adat=adat-1;
}
Serial.println (adat);
}
}Nézd át mert fejből írtam.
[ Szerkesztve ]
-
softguner
csendes tag
válasz #96292352 #1190 üzenetére
Ezek alapján, kijavítottam neked a fenti kódomat. Elviekben működik, bár tesztelni ezt sem tudtam, mert nincs nálam semmi. Az első kódnál is kiderült volna, hogy balfax voltam, de sajnos nincs nálam eszköz.
int buttonpin = 13;
int buttonpin1 = 12;
int value =0;
int value2 =0;
int adat=0;
int b1state = 0;
int b2state = 0;
void setup ()
{
pinMode(buttonpin, INPUT);
pinMode(buttonpin1, INPUT);
Serial.begin (9600);
}
void loop ()
{
value = digitalRead (buttonpin);
if (value != b1state)
{
if (value == 1)
{
adat++;
Serial.println(adat);
}
}
b1state = value;
value2 = digitalRead (buttonpin1);
if (value2 != b2state)
{
if (value2 == 1)
{
adat--;
Serial.println(adat);
}
}
b2state = value2;
}