Fórum témák
- • Érdekességek
- • Fejhallgató erősítő
- • LCD TV probléma
- • Erősítő mindig és mindig
- • Muzeális készülékek-alkatrészek restaurálása
- • CNC építése házi alkatrészekből az alapoktól
- • Ki hol gyártatja a NYÁK-ot ?
- • Felajánlás, azaz ingyen elvihető
- • SMD forrasztás profin
- • Kazettás magnó (deck) javítása
- • Toroid transzformátor
- • HESTORE.hu
- • Kutya macska (vad) riasztó
- • FET vezérlése
- • Szobatermosztát bekötése
- • Hibrid erősítő
- • Borhűtő vezérlő panel
- • Karácsonyi fényfüzérek
- • Mosogatógép hiba
- • PC táp átalakítás
- • LED-es világítás
- • Kombikazán működési hiba
- • Áramlökés határoló lágyindító
- • Rádió adó építése
- • Akkus lámpa javítás
- • Elektromos távirányítós kapunyitó
- • Hűtőgép probléma
- • Villanyszerelés
- • Elektromos tolókapu
- • Villanypásztor
- • Li-Po - Li-ion akkumulátor és töltője
- • Gondolkodó ház avagy házautomatizálás
- • Transzformátor készítés, méretezés
- • Mikrohullámú sütő javítás, magnetron csere, stb.
- • Kapcsolási rajzot keresek
- • Klíma beszerelése, fűtés-hűtés házilag
- • Műhelyünk felszerelése, szerszámai
- • Rádióamatőrök topikja
- • Sárga Kazettás Piaci Nintendo (8bit)
- • Villanymotor mi a hiba?
- • Napelem alkalmazása a lakás energia ellátásában
- • Eredményjelző
- • Számítógép tápegység
- • Porszívó javítás
- • Videomagnó problémák
- • ARM CPU assembler programozás
- • Autórádió (fejegység) problémák, kérdések, válaszok
- • Számítógép hiba, de mi a probléma?
- • 433 MHz adóvevő modul tapasztalatok
- • Labortápegység készítése
- • Zajos transzformátor
- • Klíma szervizelés, javítás
- • Arduino
- • Audiofil, High End Audio
- • Opto kapu és triak
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
Törölve.
Értem mi a különbség a két megadás között, de továbbra sem szimpi nagyon! A hozzászólás módosítva: Júl 20, 2018
Nem ment el a módosítás.
Így már világos mi a különbség a szimpla ' és a " között a felsorolásoknál. Köszi!
Köszönöm szépen mindenkinek a segítségét!
Ma kísérleteztem a nem rég írt programmal, a billentyűzet nagyjából már készen is van  .
Amikor teljesen be lesz fejezve a keyboard (kb. jövőhét péntekre számítok, feltéve ha még egy ilyen hiba be nem csúszik), akkor megmutatom, hogy milyen lett a kész keyboard.
A pointer használatnak mi az előnye? A hozzászólás módosítva: Júl 20, 2018
MMA 7660 gíroszkópot szeretnék "programozni".
Hogyan tudom a regisztereket kiolvasni bőlőle (I2C kommunkálok vele), és átírni őket?
Mi ennek a dolognak az elve?
Bővebben: Link
Nem akarok könyvtárat használni, mert szűk a hely.
Csak az előre beállítotott interruptját akarom használni.
Ha ezt gyronak szeretnéd használni szerintem nem fog menni ez nem tud tengely elfordulást érzékelni....
ilyesmit: Bővebben: Link
Ami tudja mpu6050,9250 ezek elterjetek...
Annyi a dolga, ha megmozdul, ébressze az arduinót, mindegy a tegnely, mindegy az irány.
Az adatlap 23. oldal alján le van írva, hogyan lehet egy regisztert írni. Neked a 0x06-os regiszter kell, I2C kommunikáció.
Ezt nagyjából értem is, de hogyan tudom kiolvasni a pl. a 0x06 regiszter 8 bit-jét?
Ez egy lineáris gyorsulásmérő, nem giroszkóp.
Nézd meg, hogy működik a lib, és vedd ki belőle azt a néhány funkciót, ami neked kell.
Vagy keress egy Arduino I2C tutorialt.
Egyébként valószínűleg valami ilyesmi kell a regiszter olvasáshoz:
1. I2C start
2. Write device address in write mode
3. Write register address
4. I2C stop
5. I2C start
6. Write device address in read mode
7. Read register content
8. I2C stop
Lehet, hogy a 4 és 5 nem kell, olvasd el az eszköz adatlapját.
4, és 5 helyett egy restart kell, ha minden igaz.
Írni így tudod (talán):
Wire.beginTransmission(0x4C); //eszköz cím
Wire.send(0x06); //regiszte cím
Wire.send(0xFF); //regiszter bitek adatai
Wire.endTransmission();
De különben simán ki lehet ollózni a lib-ből. Ami pofon egyszerű. A hozzászólás módosítva: Júl 23, 2018
internal 16Mhz atmega328 mcu medig stabil a vcc min feszültségel?
Nincs ithon 3.3v nano csak 5v enek a vcc menyire engedhetem le min ahol még müködik megbizhatoan?
Az irásra van példa a lib-ek, de szeretném olvasni is, hogy biztosan tudjam mit csinálok.
Ez alapján kéne szerintem elindulnom:
void MMA7660::write(uint8_t _register, uint8_t _data) {
Wire.begin();
Wire.beginTransmission(MMA7660_ADDR);
Wire.write(_register);
Wire.write(_data);
Wire.endTransmission();
}
/*Function: Read a byte from the regitster of the MMA7660*/
uint8_t MMA7660::read(uint8_t _register) {
uint8_t data_read;
Wire.begin();
Wire.beginTransmission(MMA7660_ADDR);
Wire.write(_register);
Wire.endTransmission();
Wire.beginTransmission(MMA7660_ADDR);
Wire.requestFrom(MMA7660_ADDR,1);
while(Wire.available())
{
data_read = Wire.read();
}
Wire.endTransmission();
return data_read;
}
Úgy gondolom ennek működni kéne, de nem:
#include <Wire.h>
#define MMA7660_ADDR 0x4C
#define MMA7660_SRST 0x04
#define MMA7660_SPCNT 0x05
#define MMA7660_INTSU 0x06
#define MMA7660_SHINTX 0x80
#define MMA7660_SHINTY 0x40
#define MMA7660_SHINTZ 0x20
#define MMA7660_GINT 0x10
#define MMA7660_ASINT 0x08
#define MMA7660_PDINT 0x04
#define MMA7660_PLINT 0x02
#define MMA7660_FBINT 0x01
#define MMA7660_MODE 0x07
#define MMA7660_STAND_BY 0x00
#define MMA7660_ACTIVE 0x01
#define MMA7660_SR 0x08 //sample rate register
#define AUTO_SLEEP_120 0X00//120 sample per second
#define AUTO_SLEEP_64 0X01
#define AUTO_SLEEP_32 0X02
#define AUTO_SLEEP_16 0X03
#define AUTO_SLEEP_8 0X04
#define AUTO_SLEEP_4 0X05
#define AUTO_SLEEP_2 0X06
#define AUTO_SLEEP_1 0X07
#define MMA7660_PDET 0x09
#define MMA7660_PD 0x0A
uint8_t data_read;
void setup() {
Serial.begin(9600);
Wire.begin(); //Standby mode
Wire.beginTransmission(MMA7660_ADDR);
Wire.write(MMA7660_MODE);
Wire.write(MMA7660_STAND_BY);
Wire.endTransmission();
Wire.begin(); // register irás
Wire.beginTransmission(MMA7660_ADDR);
Wire.write(MMA7660_INTSU);
Wire.write(MMA7660_GINT);
Wire.endTransmission();
Wire.begin(); //register olvasás
Wire.beginTransmission(MMA7660_ADDR);
Wire.write(MMA7660_INTSU);
Wire.endTransmission();
Wire.beginTransmission(MMA7660_ADDR);
Wire.requestFrom(MMA7660_ADDR,8);
while(Wire.available())
{
data_read = ( Wire.read());
Serial.print ( data_read);
}
Wire.endTransmission();
}
void loop() {
}
"000000160" ad vissza. Hol a hiba?
slep modbol felébresztés csak interrup lábakon lehetséges pl 328 nál d2, d3 vagy van más függvény vagy láb amivel ez lehetséges?
pl
//This program will test the PIR using interrupts
#include <avr/sleep.h>
#include <avr/interrupt.h>
void setup()
{
Serial.begin(115200);
pinMode(3,INPUT);
digitalWrite(3, LOW);
pinMode(4,OUTPUT);
//Signal PIR startup by flashing an LED
digitalWrite(4,HIGH);
delay(5000);
digitalWrite(4,LOW);
delay(200);
}
void loop()
{
//Come out of sleep and read state of PIR pin
bool flag = digitalRead(3);
if (flag == true)
{
Serial.println("tripped");
digitalWrite(4,HIGH);
}
else
{
Serial.println("not tripped");
digitalWrite(4,LOW);
}
delay(100);
sleepNow();
}
void sleepNow()
{
Serial.println("Entering Sleep");
// Set pin 3 as interrupt and attach handler:
attachInterrupt(1, wakeUp, CHANGE);
delay(100);
// Choose our preferred sleep mode:
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
// Set sleep enable (SE) bit:
sleep_enable();
// Put the device to sleep:
sleep_mode();
// Upon waking up, sketch continues from this point.
sleep_disable();
}
void wakeUp(void)
{
detachInterrupt(1);
}
Majd mindegyik lábon van pcint lehetőség. Az is ébreszti.
mcu belsö regiszteres dolgokba totál nem értem van egyszerübb megoldás még?
interupt 2..3 pin
#include <avr/interrupt.h>
attachInterrupt(1, wakeUp, CHANGE); //3 pin ellenörzése
detachInterrupt(1); //3 pin ellenörzése kikapcsolássa
Másik könyvtár ami más D4..D13 pint is vehet fel!
#include <PinChangeInt.h>
attachPinChangeInterrupt(4, wakeUp, CHANGE); //4 pin ellenörzése
4 pin ellenörzése kikapcsolássa milyen parancsal vajon?
Valaki? A hozzászólás módosítva: Júl 25, 2018
Szerintem alapből, 2,3 pin-en megy. Miért nem jó az neked?
Mert már foglaltak szenzorokal!
plD4....D10 is vannak de ezeken (nem interupt) hogy tudom visszahozni sleep állapotbol a 328 at?
Periódikus altatás?
15 ms -től 8 s -ig gond nélkül megy. A hozzászólás módosítva: Júl 25, 2018
<avr/sleep.h> használom!
van valami van pcint is de az kinai nekem definicio sem megy belöre!
Ez ébresz is de nem tudom kikapcsolni!
#include <PinChangeInt.h>
attachPinChangeInterrupt(4, wakeUp, CHANGE);
De nem alszik is vissza!
#include <avr/sleep.h>
#include <avr/interrupt.h>
#include <PinChangeInt.h>
void setup()
{
Serial.begin(115200);
pinMode(3,INPUT);
digitalWrite(3, LOW);
pinMode(4, INPUT_PULLUP);
digitalWrite(4, LOW);
pinMode(13,OUTPUT);
//Signal PIR startup by flashing an LED
digitalWrite(13,HIGH);
delay(2000);
digitalWrite(13,LOW);
delay(200);
}
void loop()
{
//Come out of sleep and read state of PIR pin
bool flag = digitalRead(3);
bool flag2 = digitalRead(4);
if (flag == true || flag2 == true)
{
Serial.println("tripped");
digitalWrite(13,HIGH);
}
else
{
Serial.println("not tripped");
digitalWrite(13,LOW);
}
delay(100);
sleepNow();
}
void sleepNow()
{
Serial.println("Entering Sleep");
// Set pin 3 as interrupt and attach handler:
attachInterrupt(1, wakeUp, CHANGE);
// attachPinChangeInterrupt(4, wakeUp, CHANGE);
PCintPort::attachInterrupt(4, wakeUp, CHANGE);
delay(100);
// Choose our preferred sleep mode:
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
// Set sleep enable (SE) bit:
sleep_enable();
// Put the device to sleep:
sleep_mode();
// Upon waking up, sketch continues from this point.
sleep_disable();
}
void wakeUp(void)
{
detachInterrupt(1);
PCintPort::detachInterrupt(4);
//detachPinChangeInterrupt(4);
}
A hozzászólás módosítva: Júl 25, 2018
Ez egy favágó kód.
1 s alvás utána, megnézi a WakeUpPin-t alacsony-e.
Ha csak ez fut a loop-ban "szinte" végig alszik, de a pin alacsony szintje "ébreszti".
void loop() {
LowPower.powerDown(SLEEP_1S, ADC_OFF, BOD_OFF);
if ( digitalRead (WakeUpPin) == LOW )
{
tortenikvalami();
}
}
Nem ébred fel hiába huzogatom a D4 lábat LOW re!
Közbe mérem az áramot micro 6uA..
#include "LowPower.h"
const int led = 13;
const int wakeUpPin = 4;
void wakeUp()
{
}
void setup()
{
pinMode(wakeUpPin, INPUT);
pinMode(led, OUTPUT);
}
void loop()
{
LowPower.powerDown(SLEEP_1S, ADC_OFF, BOD_OFF);
if ( digitalRead (wakeUpPin) == HIGH )
{
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
}
|
|