if (Tavolsag <= 200 ) {
// Ezt a részt minek újra ismételgetni???
analogWrite(5, 0);
Serial.print("5.láb le");
analogWrite(6, pwm);
Serial.println("kifele");
// delay(100); ez felesleges
do{
// Itt várakozunk, közben frissítjük Tavolsag értékét
Tavolsag = 10*EchoTime/58; // a celtargy tavolsaganak kiszamitasa (mm-ben)
}while(Tavolsag>=400);
Ma voltam konzultáción. Kiderült, hogy a motor irányváltásos működése körülbelül 5 sorral leírható, csak én bonyolítottam túl Pontosítottunk a feladaton is. A tanár azt mondta, hogy a program elejére szúrjam be egy szinusz jel értékeit táblázatban (excelből pl), és ahogy különböző időközönként frissít, továbbhalad, és pwm értékét változtatja. Így értette azt, hogy rá lehessen kényszeríteni egy szinusz jelet. A másik amit kért, hogy a loop lefutásának idejét kellene fixálni, illetve megtudni mennyi idő alatt fut le. Ha bele írunk rengeteg Serial.print()-et akkor is annyi idő alatt fusson le, mintha egy sem lenne benne. Ahogy nyomkodjuk a billentyűt az ellenerőt vált ki ami kicsit lassítja a motort. Nekünk a cél az lenne, hogy a motor bármekkora ellenerő hatására is ugyanúgy tartsa a sebességet. Ahogy kivettem a szavaiból a szinusz bemeneti értékéből ki akarja vonni az adott pwm értékét, és a hibát (különbséget) felerősíti. A mozgató program egyébként ennyi:
feladat1.docx
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Figyelj!
Hozzászólás írás közben van a felső sorban CODE gomb!
Ha oda beszúrnád az ilyen rövidke programodat, itt láthatnánk, nem kellene letöltögetnünk Wordbe!
Igazad van ez a példaprogramban volt benn, amit egyelőre átmásoltam, de a kiírást ki fogom szedni belőle. A szinuszjel táblázatba rakásában és onnan kiolvasásában tudsz segíteni? :$
#include <avr/pgmspace.h>
// save some unsigned ints
PROGMEM prog_uint16_t charSet[] = { 65000, 32796, 16843, 10, 11234};
// save some chars
prog_uchar signMessage[] PROGMEM = {"I AM PREDATOR, UNSEEN COMBATANT. CREATED BY THE UNITED STATES DEPART"};
unsigned int displayInt;
int k; // counter variable
char myChar;
// read back a 2-byte int
displayInt = pgm_read_word_near(charSet + k)
// read back a char
myChar = pgm_read_byte_near(signMessage + k);
Segítséget szeretnék kérni, TavIR-től vettem arduinot és hozzá logger shield-et (ma jött meg), amiben szerettem volna belőni az RTC-t, de sajnos nem járok sikerrel, amit kiír:
"2165/165/165 165:165:85
since midnight 1/1/1970 = 2090769489s = 24198d
now + 7d + 30s: 2036/4/9 17:18:39"
A ds1307-es mintaprogrammal próbáltam, ha manuálisan adom meg neki a dátumot (bármit) akkor is ugyan ezt adja be, kiveszem az elemet, vissza, szintén. Neten utána néztem, de nem sok megoldásra leltem (legtöbb helyen azt írták hogy valszeg hibás az RTC vagy a forrasztás)
Nem tudok sajnos hozzászólást szerkeszteni, de azóta még próbálkoztam az RTC modullal.
Megnéztem a kontaktokat, próbáltam más rtc könyvtárral is, más forráskódokkal is. Semmi
2165/165/165 165:165:85
2165/165/165 165:165:85
Nagyon úgy néz ki hogy rossz az ic
TavIR-nál jár garancia? Sajnos telefonon nem tudtam őket elérni mikor próbáltam (ki volt kapcsolva, mind a 3 alkalomkor, munkaidőben)
Garancia egyebek ügyintézése - emailban (a szó elszáll..).
A panelen az átkötés alul megvan a A4/A5 vonalakra?
A I2C detect mit mond?
Gombelem berakva? Feszültsége megvan?
U.i.: Munkaidőben szinte nincs kikapcsolva a telefon. Max. kicsöng (kivéve, ha tárgyalás van, akkor ki lehet lőve, vagy ha előadáson vagyok). Ekkor küld sms-t de jobb ha emailt írsz.
Robert írta:Garancia egyebek ügyintézése - emailban (a szó elszáll..).
A panelen az átkötés alul megvan a A4/A5 vonalakra?
A I2C detect mit mond?
Gombelem berakva? Feszültsége megvan?
U.i.: Munkaidőben szinte nincs kikapcsolva a telefon. Max. kicsöng (kivéve, ha tárgyalás van, akkor ki lehet lőve, vagy ha előadáson vagyok). Ekkor küld sms-t de jobb ha emailt írsz.
Elnézést kérek, én voltam a buta
Sikerült megoldani, az SDA és SCL kimeneteket kellett átkötni a Data logging shield-en, most már minden jó!
Egy kis segítséget szeretnék kérni, a programozáshoz.
Ez egy nagyobb program egy része, és ennek a lényege az lenne hogy meghatározott (állítható) ideig digitális 1, majd a másik meghatározott ideig digitális 0 az adott kimeneten, for ciklus használata nélkül, mert közbe mást is szeretnék hogy fusson
Jelenlegi állapotában folyamatosan be van kapcsolva, pedig serial monitor szerint a 2. if feltételbe belemegy, mert kiírja, hogy "Most kikapcsolt" de a digitalWrite nem írja át 0-ra (végig marad 1)
rostasc3 írta:Szia!
A Serial.println(x); sorban az x változása az amit vársz?
Írj ide pár sort abból amit közben kiír! A serial monitorból.
Igen, csak figyeltem hogy megfelelően számol e az x, de további kutakodással kezdem kaparni hogy merre lehet a probléma gyökere, és valahogy a könyvtárak felé kell keresgélni:
#define Ledbe 2
#define Ledki 5
#include <Wire.h>
#include "RTClib.h"
#include <SPI.h>
int ledPin = 2;
// short x;
RTC_DS1307 RTC;
void setup() {
// Wire.begin();
RTC.begin();
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// DateTime now = RTC.now();
RTC.now();
// x=now.unixtime()%(Ledbe+Ledki);
digitalWrite(ledPin, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(ledPin, LOW); // set the LED off
delay(1000);
}
Itt annyit figyeltem meg, ha a Wire.begin() függvényt meghívom (tehát kiveszem a //-eket) akkor már nem fog villogni a led, ami a 2-es pin-en van, ugyan ez az RTC.now() függvénnyel is (jelen állapotban nem villog a kód, kikell hozzá kommentelni az RTC.now()-t) (Arduino Leonardo-t használok, és rajta egy Data logger shield)
Elnézést a sok hsz-ért, már nem tudom szerkeszteni a korábbit, úgy néz ki hogy a Wire könyvtár meghívás után, valamiért a 2-es-t HIGH-ra állítja, és nem lehet módosítani indítás után, másik lábon (pl 1-es) azon jó (Valszeg ugyan ez a helyzet az RTC könyvtárral is)
Ilyen esetben mit lehet tenni? Szükségem lenne a kimenetre (más kérdés hogy akad e még hasonló gond, minden I/O port-ra szükségem lenne amúgy)
EDIT: a 2-es és 3-as digitális pin folyamatosan HIGH-on van Wire könyvtárral, és valószínűleg az RTC.now könyvtárral is
Lehet, hogy bele kellene nézni a wire könyvtárba, hol foghatja ezeket a lábakat. Én is használok wire könyvtárat és 1307-et is, de nálam nem volt ilyen gond. Talán más wire könyvtár segít.