|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
valahogy ezt meg lehetne oldani ?
Nem igy akartad ?
void setup() {
Serial.begin(9600);
}
void loop() {
randNumber1 = random(1, 1000); // for nelkul
Serial.println(randNumber1 );
delay(1000);
// step one revolution in one direction:
Serial.println("clockwise ");
myStepper.step(randNumber1);
delay(1000);
// step one revolution in the other direction:
Serial.println("counterclockwise ");
myStepper.step(-randNumber1);
delay(1000); // hogy lass is valamit rajta
// es majd innen kezdi elolrol
}
A hozzászólás módosítva: Nov 4, 2015
Ezek nem lesznek véletlen számok, minden bekapcsolás után ugyanaz a sorozat lesz az eremény. A setup-ban használd a zajgenerátort:
randomSeed(analogRead(0));
En kiprobaltam es azok lettek. Sajni mar lezartam a gepet, de holnap estefele megmutatom. Addig is ki lehet próbálni.
(#) |
PP hozzászólása |
Nov 5, 2015 |
 |
/ |
 |
|
Sziasztok!
Próbálok ismerkedni az arduinoval. Ha jól értem van arra lehetőség, hogy miután összeállt a kis projektünk, úgy építsük meg a végleges verziót, hogy ne kelljen hozzá egy komplett board, hanem a minimálisan szükséges elemeket az Atmega chip köré építjük. Nekem pont az ellenkezőjére lenne szükségem  Találtam egy olyan rajzot, amin már ez a minimalista verzió szerepel. Hogyan tudnám ebből visszaállítani az Arduinos verziót, hogy tudjak kísérletezni?
1. Veszel egy 5V-os jelszintű USB-UART TTL átalakítót (FTDI FT232RL, PL2303, CH340 stb), annak az RX/TX kivezetését összekötöd a rajzokon bejelölt TX/RX kivezetéssel.
2. A RESET-tel lelölt lábat pedig egy 100 nF-os kondenzátoron keresztül kösd össze a fenti USB-UART átalakító DTR kivezetésével.
3. Egy másik Arduino kártya vagy AVR programozó segítségével töltsd rá a bootloadert.
A 2. pont csak kényelmi szolgáltatás, ahhoz kell, hogy ne kelljen programozáskor kézzel nyomni a RESET gombot. A hozzászólás módosítva: Nov 5, 2015
Sziasztok!
Lehetne miniből, vagy nanoból jó minőségű bluetooth zene lejátszót készíteni?
(#) |
ALI hozzászólása |
Nov 5, 2015 |
 |
/ |
 |
|
Sziasztok.
Ismét van egy kis gondom a hőmérséklet méréssel.
LM35-el mérek be állítottam, hogy percenként mérjen de hol 18C hol meg 40C mér. Mitől lehet ez?
A mérőpont kb 5 méterre van az uno-tól.
Erősítő nincs meg szűrő se. Szűrő az valamilyen kondi lenne?
Sziasztok!
Egy 16x2 kijelzős OBD faggatót kezdtem átalakítani egy 2.4"-os kijelzőhöz, hogy több infót láthassak egyszerre. Viszont valami nem stimmel, mert olvas egy értéket és azt használja mindenhova.
Íme a kód, kérném valaki hozzáértő nézze át:
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX
#include <Adafruit_GFX.h>
#include <Adafruit_TFTLCD.h>
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4
#define BLACK 0x0000
#define BLUE 0x0110
#define RED 0xF800
#define GREEN 0x08E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
//Declare BTSerial Read variables
int CmdCount=1;
byte inData;
char inChar;
String BuildINString="";
String DisplayString="";
long DisplayValue;
String SentMessage="";
int ByteCount=0;
long A;
int B;
int WorkingVal;
String WorkingString="";
int RefreshCounter=0; // when the reading should refresh
int RefreshCounterMax=50; //Adjust this refreshrate
int RESETMenuName=0;
//MenuAnalogVal
int i=0;
//Declare Buttons
int MenuID=0;
int UpDownMenu=0;
void setup()
{
Serial.begin(38400);
BTSerial.begin(38400);
// delay(3000);
BTSerial.println("AT+ORGL");
// set up the LCD's number of columns and rows:
// Bootup();//Simulate Bootup process doesnt have to be here this only makes it look cool
tft.reset();
tft.begin(0x9341);
Retry:
tft.setRotation(0);
tft.fillScreen(BLACK);
tft.setCursor(0, 0);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.println("Connecting...");
delay(500);
//Send a test message to see if the ELM327 Chip is responding
SentMessage = "ATI";
BTSerial.println("ATI");delay(500);ReadData();
if (BuildINString.substring(1,7)=="ELM327")
{
tft.setRotation(0);
tft.fillScreen(BLACK);
tft.setCursor(0, 0);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.println("Engine 'C:");
tft.setCursor(0, 33);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.println("IAT 'C:");
tft.setCursor(0, 66);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.println("Throttle %:");
tft.setCursor(0, 99);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.println("RPM:");
tft.setCursor(0, 132);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.println("Speed km/h:");
tft.setCursor(0, 165);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.println("AFR g/s:");
}
else
{
tft.fillScreen(BLACK);
tft.setCursor(0, 0);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.println("Error: no connection");
delay(1500);
goto Retry;
}
tft.fillRect(0,0,240,25,BLACK);
tft.setCursor(0, 0);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.println("Engine 'C:");
delay(1500);
}
void loop()
{
{
for (int i=0; i <= 5; i++) {
delay(1000);
if (i == 0) {MenuID = 0;}
if (i == 1) {MenuID = 1;}
if (i == 2) {MenuID = 2;}
if (i == 3) {MenuID = 3;}
if (i == 4) {MenuID = 4;}
if (i == 5) {MenuID = 5;}
// if (i == 6) {MenuID = 6;}
if (MenuID==0){/*tft.setCursor(0, 0); tft.setTextSize(2); tft.setTextColor(WHITE); tft.print("01 Coolant Temp ");tft.setCursor(140, 0);tft.print(DisplayString);*/BTSerial.println("01 05");delay(500);ReadData();}
if (MenuID==1){/*tft.setCursor(0, 0); tft.setTextSize(2); tft.setTextColor(WHITE); tft.print("02 IAT Temp ");tft.setCursor(140, 33);tft.print(DisplayString);*/BTSerial.println("01 0F");delay(500);ReadData();}
if (MenuID==2){/*tft.setCursor(0, 0); tft.setTextSize(2); tft.setTextColor(WHITE); tft.print("03 Throttle % ");tft.setCursor(140, 66);tft.print(DisplayString);*/BTSerial.println("01 11");delay(500);ReadData();}
if (MenuID==3){/*tft.setCursor(0, 0); tft.setTextSize(2); tft.setTextColor(WHITE); tft.print("04 RPM ");tft.setCursor(140, 99);tft.print(DisplayString);*/BTSerial.println("01 0C");delay(500);ReadData();}
if (MenuID==4){/*tft.setCursor(0, 0); tft.setTextSize(2); tft.setTextColor(WHITE); tft.print("05 Vehicle Speed ");tft.setCursor(140, 132);tft.print(DisplayString);*/BTSerial.println("01 0D");delay(500);ReadData();}
if (MenuID==5){/*tft.setCursor(0, 0); tft.setTextSize(2); tft.setTextColor(WHITE); tft.print("06 Air Flow Rate ");tft.setCursor(140, 165);tft.print(DisplayString);*/BTSerial.println("01 10");delay(500);ReadData();}
}
}
}
//Read Data and act accordingly
void ReadData()
{
BuildINString="";
while(BTSerial.available() > 0)
{
inData=0;
inChar=0;
inData = BTSerial.read();
inChar=char(inData);
BuildINString = BuildINString + inChar;
}
if (MenuID==0)
{
WorkingString = BuildINString.substring(7,9);
A = strtoul(WorkingString.c_str(),NULL,16);
tft.fillRect(140,0,170,25,BLACK);
DisplayValue = A - 40;
DisplayString = String(DisplayValue);
tft.setCursor(140, 0);
tft.print(DisplayString);
}
//IAT Temp
if (MenuID==1)
{
WorkingString = BuildINString.substring(7,9);
A = strtoul(WorkingString.c_str(),NULL,16);
tft.fillRect(140,33,170,25,BLACK);
DisplayValue = A -40;
DisplayString = String(DisplayValue);
tft.setCursor(140, 33);
tft.print(DisplayString);
}
//Throttle position
if (MenuID==2)
{
WorkingString = BuildINString.substring(7,9);
A = strtoul(WorkingString.c_str(),NULL,16);
tft.fillRect(140,66,170,25,BLACK);
DisplayValue = A *100/255;
DisplayString = String(DisplayValue);
tft.setCursor(140, 66);
tft.print(DisplayString);
}
//RPM
if (MenuID==3)
{
WorkingString = BuildINString.substring(7,9);
A = strtoul(WorkingString.c_str(),NULL,16);
WorkingString = BuildINString.substring(10,12);
B = strtoul(WorkingString.c_str(),NULL,16);
tft.fillRect(140,99,170,25,BLACK);
DisplayValue = ((A * 256)+B)/4;
tft.setTextColor(YELLOW);
tft.setTextSize(3);
DisplayString = String(DisplayValue);
tft.setCursor(140, 99);
tft.print(DisplayString);
}
//Calculate Vehicle speed I.E Returned bytes wil be 41 0C 1B E0
if (MenuID==4)
{
WorkingString = BuildINString.substring(7,9);
A = strtoul(WorkingString.c_str(),NULL,16);
tft.fillRect(140,132,170,25,BLACK);
DisplayValue = A;
DisplayString = String(DisplayValue);
tft.setCursor(140, 132);
tft.print(DisplayString);
}
//Air flow Rate
if (MenuID==5)
{
WorkingString = BuildINString.substring(7,9);
A = strtoul(WorkingString.c_str(),NULL,16);
WorkingString = BuildINString.substring(11,13);
B = strtoul(WorkingString.c_str(),NULL,16);
tft.fillRect(140,165,170,25,BLACK);
DisplayValue = ((A * 256)+B)/100;
DisplayString = String(DisplayValue);
tft.setCursor(140, 165);
tft.print(DisplayString);
}
}
Köszönettel.
LM35öt nem illik 15 méteres (3*5) dróton lógatni.
Azon az "antennán" mindenféle felesleges zajt szed össze.
Oda már illik egy mérőerősítős áramhurkot építeni.
Árnyékolni árnyékolhatod az "talán segíthet".
Vagy sodrott érpárral (UTP) bekötni.
adatlap 7 8 9 oldal A hozzászólás módosítva: Nov 5, 2015
Üdv!
Én az R-C szűrős (figure 4.) megoldást valósítottam meg riasztókábellel, 5-6 méter távolságra.
Másodpercenként van hőmérséklet kiíratva, nincs ugrálás, nincs hiba.
Üdv!
Meg csináltam én is úgy, így már jól mér.
Köszi
Megvan a hiba. A for ciklussal volt a bajság.
Képen működés közben.
Sziasztok!
Ötletetekre vagy konkrétabb segítséget kérnék. Hogyan kell egy 3×4-es billentyűmátrixot kezelni, a bevitt értéket beolvasni egy változóba.
Köszönöm!
Talán így?
Bővebben: KeypadTutorial
/* Keypadtest.pde
*
* Demonstrate the simplest use of the keypad library.
*
* The first step is to connect your keypad to the
* Arduino using the pin numbers listed below in
* rowPins[] and colPins[]. If you want to use different
* pins then you can change the numbers below to
* match your setup.
*
*/
#include <Keypad.h>
const byte ROWS = 4; // Four rows
const byte COLS = 3; // Three columns
// Define the Keymap
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'#','0','*'}
};
// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[ROWS] = { 9, 8, 7, 6 };
// Connect keypad COL0, COL1 and COL2 to these Arduino pins.
byte colPins[COLS] = { 12, 11, 10 };
// Create the Keypad
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
#define ledpin 13
void setup()
{
pinMode(ledpin,OUTPUT);
digitalWrite(ledpin, HIGH);
Serial.begin(9600);
}
void loop()
{
char key = kpd.getKey();
if(key) // Check for a valid key.
{
switch (key)
{
case '*':
digitalWrite(ledpin, LOW);
break;
case '#':
digitalWrite(ledpin, HIGH);
break;
default:
Serial.println(key);
}
}
}
Üdv olyan kérdésem lenne hogy írtam egy egész kis frappáns programot amit feltettem . Hogy lehetne megoldani hogy körív is legyen benne . Mint látható minden randommal történik ez alapján szeretném folytatni .
#include <Stepper.h>
const int stepsPerRevolution = 3; // lépés szám 0 motor
const int stepsPerRevolution1 = 3; // lépés szám 1motor
// for your motor
long randNumber1;
long randNumber2;
long randNumber3;
long randNumber4;
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
Stepper myStepper1(stepsPerRevolution1, 4, 5, 6, 7);
void setup() {
Serial.begin(9600);
}
void loop() {
randNumber1 = random(1, 1200); // for nelkul
randNumber3 = random(1, 1200); // for nelkul
Serial.println(randNumber1 );
delay(1);
// step one revolution in one direction:
Serial.println("clockwise ");
myStepper.step(randNumber1);
delay(1);
// step one revolution in the other direction:
Serial.println("counterclockwise ");
myStepper.step(-randNumber3);
delay(1); // hogy lass is valamit rajta
// es majd innen kezdi elolrol
randNumber2 = random(1, 1200);
randNumber4 = random(1, 1200);
Serial.println(randNumber2 );
delay(1);
Serial.println("clockwise ");
myStepper1.step(randNumber2);
delay(1);
Serial.println("counterclockwise ");
myStepper1.step(-randNumber4);
delay(1); // hogy lass is valamit rajta
// es majd innen kezdi elolrol
}
A hozzászólás módosítva: Nov 9, 2015
Sziasztok!
Az lenne a kérdésem, hogy a mellékelt kapcsolással működésre tudom-e bírni a 2,2Kw-os motort ha igen, akkor a FET-ek ki fogják-e bírni. A Másik kérdésem pedig az lenne, hogy a FET gate feszültsége, 20V. Az arduino pedig csak 5 V-ot képes kiadni. Hogyan tudom teljesen ill. félig kinyitni ill. zárni a fetet így. Vagy esetleg egy olyan vezérlést csinálni elé, ami eleve 20V-ot szabályoz 5V-al?
#define FET1 9
#define FET2 10
#define FET3 11
#define KAPCSOLAS_MAX 255
#define KAPCSOLAS_MIN 0
int IDO=200;
int KAPCSOLAS1=0; //aktuális szint (0-255)
int KAPCSOLAS2=128; //aktuális szint (0-255)
int KAPCSOLAS3=255; //aktuális szint (0-255)
void setup() {
pinMode(FET1, OUTPUT); //9-es láb OUTPUT
pinMode(FET2, OUTPUT); //10-es láb OUTPUT
pinMode(FET3, OUTPUT); //11-es láb OUTPUT
}
void loop() {
analogWrite(FET1, KAPCSOLAS3);
analogWrite(FET2, KAPCSOLAS2);
analogWrite(FET3, KAPCSOLAS1);
delay(IDO);
analogWrite(FET1, KAPCSOLAS2);
analogWrite(FET2, KAPCSOLAS3);
analogWrite(FET3, KAPCSOLAS2);
delay(IDO);
analogWrite(FET1, KAPCSOLAS1);
analogWrite(FET2, KAPCSOLAS2);
analogWrite(FET3, KAPCSOLAS3);
delay(IDO);
analogWrite(FET1, KAPCSOLAS2);
analogWrite(FET2, KAPCSOLAS1);
analogWrite(FET3, KAPCSOLAS2);
delay(IDO);
}
Pl IR2130 három fázisú hídmeghajtó IC-vel meg tudod csinálni.
Félig nem szokták kinyitni a FET-et hanem PWM ben meg van szaggatva az áram.
De gondolom frekvencia váltó lenne, az ennél egy kicsit bonyolultabb, keress egy kész kapcsolást szoftverrel vagy vegyél egy gyárit. A hozzászólás módosítva: Nov 10, 2015
Ezt a jelenlegi elektronikai ismereteiddel ne erőltesd, mert meg fogod ölni magad. Egy háromfázisú 400V-os aszinkron motorhoz való frekiváltó DC köre 600V körül szokott lenni. Itt már olyan áramkörtervezési ismeretekre van szükség, amivel csak egy tapasztalt villamosmérnök rendelkezik. Komoly védelmet kell kiépíteni, megfelelően le kell választani a magasfeszt a vezérlőfeszről, átkell gondolni a lehetséges meghibásodási eseteket, stb.
Vegyél egy kész gyári megoldást egy normálisabb gyártótól, a legtöbb frekvenciaváltó könnyen vezérelhető 0-10VDC jellel, amit már előállíthatsz az arduino-val is (PWM DAC + műveleti erősítő). A hozzászólás módosítva: Nov 11, 2015
De mi lenne a feladat? Mit szeretnél a "félig kinyitott" FET-ekkel?
Félfordulatot?
Megérkezett a kicsi kék panelem:Arduino UNO.
A szoftvert letöltöttem (1.6.6) és egy pendrive-ra kicsomagoltam. Mikor összedugom a laptopommal az L jelű sárga LED villog ez szeintem nem normális, a szoftverben pedig nem tudok COM-ot választani, üzenetként, pedig a COM1 nincs engedélyezve üzenetet kapom. A 9V-os elemet rá kell-e csatlakoztatni vagy az USB-ről kap tápellátást?
Nézed meg hogy milyen portok vannak Win alatt. (De az Arduino IDE alatt is látod). Ha nincsenek, akkor fel kell tenni a soros driverét az UNO-n lévô chipnek. (FTDI, CH340, stb). Nem kell neki semmi plusz feszt adni, elég az USB. A hozzászólás módosítva: Nov 11, 2015
Ha a driver jól van telepítve, csatlakozás után a meglévő COM1 mellett egy másik soros portnak is meg kell jelennie. Ezt kell majd az Arduino Tools -> Serial port menűben kiválasztani. Ha az op. rendszer nem ismeri fel, Neked kell megkeresni és telepíteni. Bővebben: Link
Üdv. Rendeltem egy Arduino Mega 2560 fejlesztő panelt,ami szerencsémre házhoz is jött,viszont van vele egy olyan probléma hogy egyszerűen nem ismeri fel a gép. Mármint próbáltam úgy ahogy írták hogy csatlakoztatom az eszközt,majd elindítom az arduino telepítőt és magától feltelepíti. Ha így teszek menet közben a program megáll. (Amikor pont egy driverisp.exe nevű file-t installálna,akkor egyszerűen megfagy a program.) Ez mitől lehetséges? A gép csak úgy látja az új mega platformot hogy USB 2.0 2 . Remélem valaki tudja erre a választ. A válaszokat előre is köszönöm.
Eladó mit mond?
Ár - érték arányos ?
Te mit tettél eddig?
1, elolvastad a leírást
2, megnézted a chip feliratát ami az USB.t illeszti?
Jé, nem is Arduino gyári kialakítás!
CH340 drivert keres....
Köszönöm! Hasznos válasz volt,és egy életre megjegyeztem.  Bár attól hogy "olcsó hús" kütyüt vásároltam,még teljes értékűen tudja azt amit az eredeti nem?
|
|