(06-09-2018, 00:16)Freyeth napisał(a): Tak na marginesie: używałem skryptu Blink, żeby upewnić się, że komunikacja z płytką jest, więc może nie jestem kompletnym niemotą, za jakiego mnie uważasz, wnioskując z tego wpisu.Mój wpis dotyczy Arduinowców w ogóle.
Ja za budowę domu nie zabieram się nie mając odpowiednich narzędzi, podobnie za hydraulikę czy naprawę samochodu. Arduinowcy, nie mając sprzętu, zabierają się za coś za co nie powinni.
Aby zrobić cokolwiek poważniejszego, potrzeba:
- wiedzy
- sprzętu
- praktyki
Czy ucząc się zaczynamy od budowy mostu przez Wołgę czy od kładki przez strumyk?
Czy zaczynami od budowy Pałacu Kultury czy Sławojki?
Czasem Arduino ma pozytywne skutki: https://forum.arduinopolska.pl/watek-nie...sow?page=5
Kod:
#include <LiquidCrystal.h>
//lcd and timer objects declaration
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
uint8_t inputCapturePin = 13;
volatile uint16_t startingEdge = 0;
volatile uint16_t endingEdge = 0;
volatile uint16_t currentOverflowCounter = 0;
volatile uint16_t startOverflowCounter = 0;
volatile uint32_t timer3Clocks = 0;
void setup() {
noInterrupts();
Serial.begin(9600);
lcd.setCursor(1,0);
lcd.print("IMPULSE LENGTH");
lcd.setCursor(3,1);
lcd.print("MEASURMENT");
pinMode(13, INPUT);
pinMode(3, OUTPUT);
digitalWrite(3, HIGH);
//T3 registers configuration
TCCR3A = 0;
TCCR3B |= (1 << CS30); // prescaler = 0
TCCR3B &= ~(1 << CS31);
TCCR3B &= ~(1 << CS32);
TCCR3B &= ~(1 << ICES3); //input capture on falling edge
TCNT3 = 0; // initialize counter
TIMSK3 |= (1 << ICIE3)|(1 << TOIE3); //enable input capture interrupt, enable timer ovf interrupt
interrupts();
}
//loop method
void loop() {
int result = timer3Clocks / 16;
}
ISR (TIMER3_OVF_vect) {
currentOverflowCounter++;
}
ISR (TIMER3_CAPT_vect) {
if(((TCCR3B & (1 << ICES3)) >> ICES3) == 0) //checking state of ICES3bit (ICES3 == 1 input capture on rising edge)
{ //(ICES3 == 0 input capture on falling edge)
startingEdge = ICR3;
startOverflowCounter = currentOverflowCounter;
} else {
endingEdge = ICR3;
timer3Clocks = (uint16_t)endingEdge + ((uint16_t)currentOverflowCounter * 65536) - ((uint16_t)startingEdge + (startOverflowCounter * 65536));
currentOverflowCounter = 0;
}
TCCR3B ^= (1 << ICES3);
}
Naturalnie autor powyższego kodu niedługo nie będzie Arduinowcem, czego wszystkim Arduinowcom życzę.
(06-09-2018, 00:16)Freyeth napisał(a): Może dlatego, że na stronie EDTracker nie wygląda to na takie skomplikowane:Reklama dźwignią handlu!
Kup to i to, połącz ze sobą, odpal nasz program i już.... Wydaje się proste jak budowa cepa.
Proste byłoby jeśli urządzenie tworzyłoby całość i zmontowane byłoby na jednej PCB.
Co do "Nauki przez YT", bardzo dużo projektów z filmów działa tylko u autora na stole w ściśle określonych warunkach. To, że nie ma dla Arduino dostępnych plików projektu (dostępne pliki *ino), powoduje, że możesz mieć inne biblioteki niż autor programu. Efekty? Nie muszę pisać. W każdym normalnym IDE w projekcie zawarte są wszystkie pliki źródłowe, ustawiania kompilatora itp, w Arduino jest jak jest. Gdyby udostępnił same pliki źródłowe swoich projektów, to większości nie da się skompilować od tak, bo są modyfikacje w linkierze. Użycie (w GCC) reprezentacji liczb zmiennoprzecinkowych, wymaga takiej modyfikacji, o własnych sekcjach czy sekcji bootloadera nie wspomnę.
(06-09-2018, 00:16)Freyeth napisał(a): W załączniku zamieściłem zdjęcie podłączenia płytki do czujnika GY-91.Sprawdzałeś na płytce czy jest zasilanie? Tylko nie pisz, ze nie masz multimetru albo nie umiesz się nim posługiwać (50% Arduinowców ma z tym kłopoty).