Fórum témák
- • Erősítő mindig és mindig
- • Arduino
- • Audiofil, High End Audio
- • Opto kapu és triak
- • LED-es világítás
- • Villanymotor bekötése
- • Eredményjelző
- • Autórádió (fejegység) problémák, kérdések, válaszok
- • Mosógép vezérlők és általános problémáik
- • ARM CPU assembler programozás
- • Boombox javítás
- • Labortápegység készítése
- • Felajánlás, azaz ingyen elvihető
- • Oszcillátor építése rajzok
- • PLC kérdések
- • Klíma szervizelés, javítás
- • Elektromos távirányítós kapunyitó
- • Villanyszerelés
- • Kutya macska (vad) riasztó
- • PC táp átalakítás
- • FET vezérlése
- • Kapcsolási rajzot keresek
- • Opel Astra elektromos hibák
- • Rádió adó építése
- • Áramváltó trafóval áram mérés, hogy?
- • Elektromágnes
- • Rossz HDD javítás, mentés
- • Rádió áthangolása, OIRT - CCIR konverter
- • Ultrahangos párásító
- • EAGLE NYÁK tervező
- • 433 MHz adóvevő modul tapasztalatok
- • ESR mérő
- • Kombikazán működési hiba
- • Analóg voltmérő (multiméter)
- • WLAN router
- • Tápegységgel kapcsolatos kérdések
- • Kapcsolóüzemű táp 230V-ról
- • Rádióamatőrök topikja
- • Retro számítógépek
- • Marantz erősítő hiba
- • Videoton EA-7386-s erösítő
- • Számítógép hiba, de mi a probléma?
- • Villanypásztor
- • Klíma beszerelése, fűtés-hűtés házilag
- • Hegesztő inverter javítás
- • Mosogatógép hiba
- • TV-k tulajdonságai, vásárlás
- • Fejhallgató erősítő
- • Kazettás magnó (deck) javítása
- • TV hiba, mi a megoldás?
- • Gáz fogyasztás monitorozása
- • Crystal radio - detektoros rádió
- • Csere-bere
- • Hűtőgép kompresszor
- • Mobiltelefon hiba
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
Megvan hozzá a 328P-PU chip is,meikkel könyebb. Én személy szerint abban a hitben éltem hogy a 88-as többet tud,ezértis lehetne felhasználni erre a célra.
Sziasztok Arduino megát, ha 12 volttal hajtok meg nem lesz baja? Vagy arra gondoltam, az nem működne, hogy sorba kötök egy ledet vele?
Használj 5V-os stabilizátort,nagy valószínűséggel ha 12V-ról próbálnád meg műköttetni tönketennéd a vezérlőt.
De én a 9v-os bemeneten gondoltam.
Ha magán a panelen érted úgy jó,nekemis 9V-ról jár 2db 4,5V-os laposelemről. szerintem a 12V nem tesz benne kárt,de inkább nézz utánna. szerintem stabilizálja magának a feszültséget a panel.
Sziasztok!
6db sorosan kapcsolt lithium ion cella feszültségét mérem merítés közben, 0.5-1A-res áram mellett. Ha valamelyik cella 3V alá merül, az Arduino csipog, azt a cellát kikötöm a sorból, az ellenállás osztóval együtt, így az Arduino 0V-nak méri azt a bemenetet. Ezután kivonom a legfelső bemeneten mért feszültségből az előtte levő bemenetet, ami nem 0V-os, és így tovább. Soros monitoron visszaírom a feszültségeket. A define résznél szinte minden személyre szabható, 6 cellával próbáltam, de kevesebbel sem lehet túl nagy gond, még nem teszteltem.
Akit érdekel, tanulmányozza, kezdőknek sok érdekesség lehet benne. Esetleg ha valamelyik függvényre, vagy akár az egész működésre nézve ötletetek támadna, szívesen meghallgatom.
A program kipróbálva, jól működik Arduino Uno-val.
Referencia az 5V, A0-A5-re kötött feszültségeket méri. Sima 5V-os csipogó a define-ban megjelölt lábon (azért pont ott, mert mellett 3. láb GND, így az Arduinoba simán be lehet szúrni a csipogót.
Köszi!
// kovidivi 2014.08.16
#define csipogo 11 //11-es lábon
#define idotartam 2 //másodpercben
#define R1 46.3 // fesz osztó felső tagja Kohmban
#define R2 9.9 // fesz osztó alsó tagja Kohm-ban
#define cellaszam 6 // A0-A5
#define lekapcs 3.0 //lekapcsolási feszültség V-ban
#define reffesz 4.96 //USB 5V-ja
//R1 46.3 R2 9.9 reffesz 5V -> 28,384V-ig tudok mérni!
//felbontás: 0,027746V 27,75mV <- bőven oké! 2 tizedesjegy kijelzés!
//változók deklarálása:
int i,k;
double cellafeszmost[cellaszam];
double cellasensor[cellaszam];
double elozoido=0;
//typedef uint8_t
typedef unsigned char uint8_t;
uint8_t analogbemenetek[]={A0,A1,A2,A3,A4,A5};
void setup()
{
Serial.begin(9600);
Serial.println("Ido(ms)\tperc\tA0\tA1\tA2\tA3\tA4\tA5\t");
pinMode(csipogo, OUTPUT);
}
void loop()
{
while(1)
{
feszbeolvasas(); //analóg lábak beolvasása
konvert(); //átkonvertálás V-ba
kivonas(); //sorba kötött cellákat mérek, ezért ki kell vonni a legfelső cellán mért feszültségből az alatta levőt.
kiirsoros(); //soros kommunikáció
vedelem(); //csipog, ha egy cellafesz kisebb, mint 3.2V, viszont nagyobb, mint 2V (nem 0V).
idozit(); // a pontos időzítésért felel
}
}
/****************OK*/
void idozit()
{
while(millis()<((elozoido+idotartam)*1000)) { }
elozoido=elozoido+idotartam;
}
/****************OK*/
void csipog(){
for (long i=0;i<2;i++)
{
digitalWrite(csipogo,HIGH);
delay(50);
digitalWrite(csipogo,LOW);
delay(50);
}
}
/****************OK*/
void konvert()
{
for (i=0;i<cellaszam;i++)
{
cellafeszmost[i] = (cellasensor[i] * reffesz * (R2+R1))/(1023.0*R2);
}
}
/****************OK*/
void kiirsoros()
{
Serial.println();
Serial.print(millis());
Serial.print("\t");
Serial.print(millis()/60000);
Serial.print("\t");
k=0;
for (i=0;i<cellaszam;i++) //cella feszültsége
{
Serial.print(cellafeszmost[i]);
Serial.print("\t");
}
Serial.print("\t");
}
/****************OK*/
void kivonas()
{
k=i=cellaszam-1;
while(1) //összes cella feszültsége kivonva egymásból, fentről lefelé
{
if (i>=k) {k=i;k--;}
if (cellafeszmost[i]<1) //le van csatolva, nincs sorosan kötve
{ //átugorni!
i--;
}
while (1)
{
if (cellafeszmost[i]-cellafeszmost[k]>4.3) k--; //megkeresi a következő cellát, ami nem 0V
else break;
}
cellafeszmost[i]=cellafeszmost[i]-cellafeszmost[k];
i=k;
if (i==0) break; //végeztünk, ha elértük a 0. elemet.
if ((i<0)||(k<0)) break; //néha i és k minusz is tud lenni, ha overflow valamelyik feszültség.
}
}
/****************OK*/
void feszbeolvasas()
{
for (i=0;i<cellaszam;i++)
{
cellasensor[i]=analogRead(analogbemenetek[i]);
}
}
/****************OK*/
void vedelem()
{
for (i=0;i<cellaszam;i++)
{
if ((cellafeszmost[i]<3.2)&&(cellafeszmost[i]>2.5)) csipog();
}
}
/******************/
A hozzászólás módosítva: Aug 16, 2014
Sziasztok!
Van olyan köztetek, akinek van Arduinohoz USB Shield és valamilyen újabb generációs Canon DSLR fényképezőgépe /na meg öt szabad perce, hogy kipróbáljon nekem valamit/. Előre is köszönöm.
És még arra gondoltam, hogy ha esetleg beteszek egy 9v-os stabilizátort, az nem jobb? De nem értek a stabilizátorokhoz, hogy milyen típusú kéne.
Ha rátekintesz az adatlapjára, Bővebben: Link, akkor látod, hogy a külön tápcsatin 7-12V az ajánlott, és 20V a maximum. Ha stabilizátort használsz, egy 7809 pl, akkor az a bemeneti feszültségtől és az átfolyó áramtól függően melegedni fog.
A hutoterulettol es a terhelestol fugg.
7.5...12V az ajanlott, 35V a max. De a hutes miatt 15V felett ne legyel, 200mA terheles eseten.
Ennek a programnak a leírás szerint tudnia kéne a Km-t is számolni. Na ha ezt a programot felnyomom a 328p-pu chipbe. Ott kezdődik a probléma hogy itt a kijelző I2C buszon kommunikál,viszont nekem csak 2x16 karakteres kijelzőm van. Ezt hogyan tudnám megváltoztatni a programban? Valaki jártasabb segítségét kérném mivel én még tanulom az Arduino-t,de szeretném elkészíteni ezt a kilométerórát.
// Matthew McMillan
// @matthewmcmillan
//
// Digital speedometer
//
// VSS on car connects to pin 5
// CLK on display to Analog pin 5
// DAT on display to Analog pin 4
//
// Requires two Adafruit libraries:
// Adafruit_GFX
// Adafruit_LEDBackpack
#include "Adafruit_GFX.h" // Adafruit Core graphics library
#include "Adafruit_LEDBackpack.h" // Seven Segment display library
#include <SPI.h>
#include <Wire.h>
void setBrightness(uint8_t b, byte segment_address) {
if (b > 15) b = 15; //Max brightness on this display is 15.
if (b < 1) b = 1; // Brightness of 0 is too dim so make 1 the min.
Wire.beginTransmission(segment_address);
Wire.write(0xE0 | b); // write the brightness value to the hex address.
Wire.endTransmission();
}
const int lightPin = 0;
const int hardwareCounterPin = 5;
const int samplePeriod = 1000; //in milliseconds
const float pulsesPerMile = 4000; // this is pulses per mile for Toyota. Other cars are different.
const float convertMph = pulsesPerMile/3600;
unsigned int count;
float mph;
unsigned int imph;
int roundedMph;
int previousMph;
int prevCount;
const int numReadings = 30; // the number of readings for average brightness
int readings[numReadings]; // the readings array for the analog input
int index = 0; // the index of the current reading
int total = 0; // the running total
int average = 3;
Adafruit_7segment matrix = Adafruit_7segment();
byte segment_address = 0x70; //This is hex address of the 7 segment display
boolean drawDots = true;
void setup(void) {
Serial.begin(9600);
// initialize all the brightness readings to 3:
for (int thisReading = 0; thisReading < numReadings; thisReading++)
readings[thisReading] = 3;
// Start up the 7 segment display and set initial vaules
matrix.begin(segment_address);
setBrightness(3, segment_address);
matrix.println(0);
matrix.writeDisplay();
TCCR1A = 0; //Configure hardware counter
TCNT1 = 0; // Reset hardware counter to zero
}
void loop() {
/////////////////////////////////////////////////////////////
// Set the LCD brightness using a running average of
// values to help smooth out changes in brightness.
//
// read from the sensor:
int reading = analogRead(lightPin);
int brightness = (reading / 2) / 15;
if(brightness > 15){
brightness = 15;
}
if(brightness < 1){
brightness = 1;
}
readings[index] = brightness;
// add the reading to the total:
total = total + readings[index];
// advance to the next position in the array:
index = index + 1;
// if we're at the end of the array...
if (index >= numReadings)
// ...wrap around to the beginning:
index = 0;
// calculate the average:
total = 0;
for (int thisReading = 0; thisReading < numReadings; thisReading++){
total = total + readings[thisReading];
}
average = total / numReadings;
setBrightness(average, segment_address); //Set the brightness using the average
/////////////////////////////////////////////////////////////
// This uses the hardware pulse counter on the Arduino.
// Currently it collects samples for one second.
//
bitSet(TCCR1B, CS12); // start counting pulses
bitSet(TCCR1B, CS11); // Clock on rising edge
delay(samplePeriod); // Allow pulse counter to collect for samplePeriod
TCCR1B = 0; // stop counting
count = TCNT1; // Store the hardware counter in a variable
TCNT1 = 0; // Reset hardware counter to zero
mph = (count/convertMph)*10; // Convert pulse count into mph.
imph = (unsigned int) mph; // Cast to integer. 10x allows retaining 10th of mph resolution.
int x = imph / 10;
int y = imph % 10;
// Round to whole mile per hour
if(y >= 5){
roundedMph = x + 1;
}else{
roundedMph = x;
}
//If mph is less than 1mph just show 0mph.
//Readings of 0.9mph or lower are some what erratic and can
//occasionally be triggered by electrical noise.
if(x == 0){
roundedMph = 0;
}
// Don't display mph readings that are more than 50 mph higher than the
// previous reading because it is probably a spurious reading.
// Accelerating 50mph in one second is rocketship fast so it is probably
// not real.
if((roundedMph - previousMph) > 50){
matrix.println(previousMph);
}else{
matrix.println(roundedMph);
}
matrix.writeDisplay(); // Write the value to the 7 segment display.
previousMph = roundedMph; // Set previousMph for use in next loop.
}
Ha miden igaz a beütések száma alapján mondja meg hogy mennyivel fut a motor. A beütéseket előállító kügyüt el tudom készíteni,csak majd még meg kell néznem hogy mennyi beütés nálam 1Km.
PCF8574-es chipet kell beleültetni és jó is lessz? ![](/pic/smile/smile.gif) Ha igen akkor megrendelem a hozzá való chipet és elkezdem készíteni a kütyüt.
Nem lesz jó, mert a te programod, amit lentebb belinkeltél más IC-t és más kijelzőt (7 szegmens) használ.
Sziasztok! Azt szertném megcsinálni, hogy tmrpcm lib segítségével gsm egységen keresztül bejátszik egy hangot az arduino, össze is kötöttem egy jack dugóval a shield mikrofon bemenetét az arduinoval, ha egy hangszórót kötök rá tökéletes, de ha a shieldbe dugom, a telefon túloldalán szakadozva megy át a hang, ha jack kábellel egy zenét játszok be, az jól átmegy. Mi lehet a probléma?
Kicsit problémás így elsőre nekiugorni de nagyon meg szeretném csinálni. A hozzászólás módosítva: Aug 16, 2014
Sziasztok! Van 6 változóm, ami még most is aktív az Arduinoban, a soros porton csak az ezred részét küldtem át saját hibámból, így nem kiértékelhető a szám. Le lehetne valahogy ennek a változónak kérdezni az értékét soros porton keresztül? Most csak "1"-et látok, de ha már a következő 3 tizedesjegyet láthatnám, mint "1.541", már szuper lenne. Köszönöm!
Nem. Teljeen mas kijelzot hasznal a program.
Sziasztok!
Van itthon egy pár szétszedett autórádióm, és találtam az egyikben egy BU1924f RDS Decoder IC-t.
Ezt szeretném összekötni egy TEA5767 FM rádió modullal. Az IC adatlapjából nem igazán derül ki számomra, hogyan lehet az IC-t Arduinoval összekötni (I2C / SPI / egyéb) és működésre bírni! Ha valaki próbálkozott már ilyennel, akkor a segítségét kérném!
Szia!
Ha jól értelmezem az adatlapot, a BU1924f-nek csak tápfeszültség kell, valamint bemenő jel, és már működik is. A RCLK jele az órajel, RDATA pedig az adat, szerintem shiftIn utasítással be tudod olvasni a dekóder jelét.
Tévedés. A kódot megnézve, az Arduino egy linket hív meg, ami egy php-ra mutat, a linkben paraméterekben adja át a változók értékét a php-nak.
A php egy távoli szerveren fut, az arduino pedig mint egy kliens (=böngésződ otthon) meghívja a linket.
A php egyébként is szerveroldali nyelv, nem tud kliensen futni.
A linkelt kód arra jó, hogy ha pl. van egy adatgyűjtő arduino-d, akkor folyamatosan meghívva azt a paraméterezett linket, a szerver oldali php a kapott paramétereket elmenti. Így megvalósítod az adatok távoli szerverre való eljuttatását, ottani későbbi kiértékelését.
Tehát az arduino-n nem tudsz php-t futtatni, ahhoz php értelmező kellene, piszok messze áll ahhoz az arduino. A hozzászólás módosítva: Aug 17, 2014
Szia!
Köszönöm a válaszodat! Ez a ShiftIn utasítás Nekem még új, de utánna nézek!
Ezen már rég túl vagyunk, ráadásul nem nekem kellett volna címezni.
Időben igen, de jó választ nem találtam a felvetésre, így az archiv kedvéért helyesbítettem. A címzést lehet, h benéztem, elnézést
Sziasztok! Vén fejjel, most sikerült becseppennem, ebbe a témakörbe. Most próbálok újra tanulni programozni, 30-év után... Gyorsan elszállt az idő. Segítséget szeretnék kérni, tapasztaltabb kollégáktól, TFT_320QVT LCD/touch, ITDB02 shield 2.1 for Arduino Mega 2560. Nem nagyon találtam működő sketch file-t amivel gyakorolhatnék. Ha valaki tudna, működő linket küldeni, amin gyakorlatozhatnék, megérthetném a lényegét, azt megköszönném. Eddig az összes letöltött .pde és .ino file-ok compiller után egy sor hibát ír. Egyedül egy működik, amelyik vízszintesen feltölti a képernyőt 4 színnel egymás után, tehát a kütyü jó.
Köszi: Mike A hozzászólás módosítva: Aug 18, 2014
A library-k hiányoznak a kód mellől valószínűleg.
A pde-k Arduino 0023, az ino-k Arduino 1.0.x verziókhoz jók. Az Arduino 1.5.x verziók beta kiadások, ne azon tanulj!
Üdv!
Egy analóg értéktartományon belül szeretném, ha egy kimenetem aktív, magas szintű lenne.
10 K-s potméterrel leosztott feszültséget nézek az A0-s lábon, és ha az érték 100 vagy ennél kisebb akkor a 7-es lábon lévő lednek világítania kellene.
Azért hogy ne csak úgy állítgassam a potmétert, az analóg értéket kiküldöm a pc-re.
A pc-n megjelenik a beolvasott érték, viszont a led egyfolytában a potméter állásától függetlenül világít.
Én nem jöttem még rá a megoldásra, van valakinek ötlete a megoldásra?
int led = 7;
int pot = 0;
int val = 0;
void setup(){
pinMode(led,OUTPUT);
Serial.begin(9600); // 9600 baud-os soros port beallitasa
}
void loop(){
val = analogRead (pot); // ADC érték beolvasása
if(val <= 100); // Ha pot változó értéke egyenlő vagy kisebb mint 100
{digitalWrite (led, HIGH);} // akkor a led magas állapotba kerül
Serial.println(val, DEC); // a mert ADC ertek PC-re kuldese
}
Nincs megadva low érték szerintem bár én még laikus vagyok a témában.
|
|