art100:я правильно понял?
вы что без чипа ELM327 с машиной общаться хотите?
Насколько я понял, Drosha желает тестить свой аппарат без участия автомобиля. Чтобы не бегать после каждой перепрошивки ардуины в машину и назад.
|
офлайн
Неизвестный кот
Neophyte Poster
|
|
|
0 |
Город:
|
art100:я правильно понял?
вы что без чипа ELM327 с машиной общаться хотите?
Насколько я понял, Drosha желает тестить свой аппарат без участия автомобиля. Чтобы не бегать после каждой перепрошивки ардуины в машину и назад.
dimmas375:art100:я правильно понял?
вы что без чипа ELM327 с машиной общаться хотите?Насколько я понял, Drosha желает тестить свой аппарат без участия автомобиля. Чтобы не бегать после каждой перепрошивки ардуины в машину и назад.
именно так и есть
хотя если есть другое решение - ткните мордой
|
офлайн
Неизвестный кот
Neophyte Poster
|
|
|
0 |
Город:
|
Drosha:хотя если есть другое решение - ткните мордой
Не то чтобы очень. Достоверный эмулятор OBD - дело довольно трудоемкое и мало кому нужное, потому их особо и нет. Ну мот только профессиональные.
Смотрите: вам нужно создать видимость работающего двигателя, т.е. эмулировать показания датчиков, причем так, чтобы они соответствовали режиму работы двигателя. Держать их в какой-то таблице и динамически менять их. Затем вам нужна программная реализация одного из 10 - 13 (уж не помню точно) стандартов, по которым вы будете общаться с диагностическим прибором, а лучше их всех скопом. Ну и собственно преобразователь UART - CAN. Уже одно создание такого девайса тянет на те 150 бакинских с многих носов желающих, ибо вы опупеете писать столько кода и перелопачивать столько стандартов. Особенно с непривычки. ![]()
dimmas375:Drosha:хотя если есть другое решение - ткните мордой
Не то чтобы очень. Достоверный эмулятор OBD - дело довольно трудоемкое и мало кому нужное, потому их особо и нет. Ну мот только профессиональные.
![]()
Смотрите: вам нужно создать видимость работающего двигателя, т.е. эмулировать показания датчиков, причем так, чтобы они соответствовали режиму работы двигателя. Держать их в какой-то таблице и динамически менять их. Затем вам нужна программная реализация одного из 10 - 13 (уж не помню точно) стандартов, по которым вы будете общаться с диагностическим прибором, а лучше их всех скопом. Ну и собственно преобразователь UART - CAN. Уже одно создание такого девайса тянет на те 150 бакинских с многих носов желающих, ибо вы опупеете писать столько кода и перелопачивать столько стандартов. Особенно с непривычки.
понятно, по ходу проще с ноутбуком засесть в машине ![]()
прошу помощи
шаговые моторы шагают, лазерные линии линеют, камеры камерят - от стартовой кнопки
косяк в ASCII обмене
задача
получить от софта по USB символы скажем G g Go go - начать процесс
когда деталь со всех сторон покажется дать софту символ скажем S s Stop - чтоб видео записал
Вопрос:
Кто видит косяк в обмене?
//art100 20140218 for laserscanner - USB - Arduino - liserline and L298 - Stepper Motor(1.8 gradus=1 step)
// G ascii 71 Go scanning (g ascii 103 test)
#include <Stepper.h> //for stepper chip L298
//const for myStepper library first
const int stepsmotor1 = 200; // *1.8gradus/step = 360 gradus for stepper chip L298
const int stepsmotor2 = 200; // *1.8gradus/step = 360 gradus for stepper chip L298
Stepper myStepper1(stepsmotor1, 4,5,6,7); // -L298-motor
Stepper myStepper2(stepsmotor2, 8,9,10,11); // -L298-motor
//pins
//serial pin 0
//serial pin 1
int led2 = 2; //laser green test
int led3 = 3; //laser red work
//int led11 =11; // test
int led12 =12; // test on shield
int led13 =13; // test led on board always
int but0 =A0; // no solder
int but1 =A1; // button motor1 up -^-gnd
int but2 =A2; // button motor1 down -^-gnd
int but3 =A3; // button motor2 up -^-gnd
int but4 =A4; // button motor2 down -^-gnd
int but5 =A5; // test on shield
//type
int temp00=1;
int temp01=1;
int temp02=1;
int temp03=1;
int temp04=1;
int temp05=1;
long step1Laser = 200; //400step=0.9gradusa/step 200step =1.8gradusa/step 100step=3.6gradusa/step
long step1Table = 200; //400step=0.9gradusa/step 200step =1.8gradusa/step 100step=3.6gradusa/step
int commandusb = 0; //
void setup() {
Serial.begin(9600); // open COM Port
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(but0,INPUT_PULLUP);
pinMode(but1,INPUT_PULLUP);
pinMode(but2,INPUT_PULLUP);
pinMode(but3,INPUT_PULLUP);
pinMode(but4,INPUT_PULLUP);
pinMode(but5,INPUT_PULLUP);
pinMode(led12, OUTPUT);
pinMode(led13, OUTPUT);
myStepper1.setSpeed(60); // 60 rpm
myStepper2.setSpeed(60); // 60 rpm
}
//====================================================================
void loop() {
commandusb=0; temp00=1;temp01=1;temp02=1;temp03=1;temp04=1;temp05=1;//
temp01=digitalRead(but1);temp02=digitalRead(but2);temp03=digitalRead(but3);temp04=digitalRead(but4);temp05=digitalRead(but5);temp00=digitalRead(but0);
if(temp01==0 || temp02==0 || temp03==0 || temp04==0){// || temp05==0){//temp00==0 ||
digitalWrite(led2, HIGH);delay(1);digitalWrite(led2, LOW); //green
digitalWrite(led3, HIGH);delay(1);digitalWrite(led3, LOW); //red
digitalWrite(led12, HIGH);delay(1);digitalWrite(led12, LOW);//shield red
digitalWrite(led13, HIGH);delay(1);digitalWrite(led13, LOW);//shield red
Serial.print("button press:"); Serial.print(temp00);Serial.print(temp01);Serial.print(temp02);Serial.print(temp03);Serial.print(temp04);Serial.print(temp05);
Serial.println(";");
} //test
//for stepper chip L298----------------------------------
if(temp01==0){ myStepper1.step(+1); Serial.println("temp01==0 button press myStepper1.step(+1)" ); } //for stepper chip L298
if(temp02==0){ myStepper1.step(-1); Serial.println("temp02==0 button press myStepper1.step(-1)" ); } //for stepper chip L298
if(temp03==0){ myStepper2.step(+1); Serial.println("temp03==0 button press myStepper2.step(+1)" ); } //for stepper chip L298
if(temp04==0){ myStepper2.step(-1); Serial.println("temp04==0 button press myStepper3.step(-1)" ); } //for stepper chip L298
//for stepper chip L298----------------------------------
//motor table motor laser ----------------------------------------------------------------
int n=0; int m=0; int o=0;
if (Serial.available() > 0) {
commandusb = Serial.read();
Serial.print("commanda usb received: "); Serial.println(commandusb);
}
if (commandusb==71 || commandusb==103 || temp05==LOW) { // G g
^^^^^^^^ команды пролетают мимо^^^^^^^^^^^^^^^ кнопку отлавливаю и шагаем на ура ^^^^^^^^^^^
Serial.println("G");
for (o=0; o<8; o++) { // 360 gradus
for (m=0; m<step1Laser/8; m++) { // 200step/8=25step 25step*1.8gradus/step = 45 gradus scanning low
digitalWrite(led3, HIGH); //laser on
myStepper2.step(+1);
delay(1000); //for computer tormoz 1 sek
}
Serial.println("T");
for (m=0; m<step1Laser/8; m++) { // 200step/8=25step 25step*1.8gradus/step = 45 gradus return
digitalWrite(led3, LOW);
myStepper2.step(-1); // laser up
myStepper1.step(+1); // table 45 gradus
}
// for (n=0; n<step1Table/8; n++) { // 200step/8=25step 25step*1.8gradus/step = 45 gradus
// myStepper1.step(+1);
// }
delay(1000); //for computer tormoz 1 5 sek
}
}
//motor table motor laser ----------------------------------------------------------------
}
//==========================================
//------------------------------------------
//DEC Char D Ch D Ch D Ch
//0 null 32 sp 64 @ 96 `
//1 33 ! 65 A 97 a
//2 34 " 66 B 98 b
//3 35 # 67 C 99 c
//4 36 $ 68 D 100 d
//5 37 % 69 E 101 e
//6 38 & 70 F 102 f
//7 39 ' 71 G 103 g
//8 40 ( 72 H 104 h
//9 tab 41 ) 73 I 105 i
//10 line 42 * 74 J 106 j
//11 43 + 75 K 107 k
//12 44 , 76 L 108 l
//13 retur 45 - 77 M 109 m
//14 46 . 78 N 110 n
//15 47 / 79 O 111 o
//16 48 0 80 P 112 p
//17 49 1 81 Q 113 q
//18 50 2 82 R 114 r
//19 51 3 83 S 115 s
//20 52 4 84 T 116 t
//21 53 5 85 U 117 u
//22 54 6 86 V 118 v
//23 55 7 87 W 119 w
//24 56 8 88 X 120 x
//25 57 9 89 Y 121 y
//26 58 : 90 Z 122 z
//27 59 ; 91 [ 123 {
//28 60 < 92 \ 124 |
//29 61 = 93 ] 125 }
//30 62 > 94 ^ 126 ~
//31 63 ? 95 _ 127
//----------------------------------------

P.S. сам увидел
по умолчанию терминала скорость 115200
а я чип торможу прошивая Serial.begin(9600); // open COM Port
все пошло
кроме хардварного подруливания и софтовый старт
arduino-вский терминал отвечает
temp01==0 button press myStepper1.step(+1)
button press:101111;
temp01==0 button press myStepper1.step(+1)
button press:101111;
temp01==0 button press myStepper1.step(+1)
commanda usb received: 103
G
И почему у меня все создается?
|
офлайн
Неизвестный кот
Neophyte Poster
|
|
|
0 |
Город:
|
|
офлайн
Неизвестный кот
Neophyte Poster
|
|
|
0 |
Город:
|
art100, чтобы ругать ваш код нужно понимать его сакральный смысл.
Если что-то конкретное не получается - говорите, поругаем. А так код как код, что-то наверное делает.
Придираться к стилю я не буду.
Приобрел велосипед и возникло желание оригинально подсветить колесо(а).
Готовые решения на рынке есть, но велосипед становится похож на ёлку.
Что должно получиться в идеале:
1. подсветка должна быть достаточно тусклой. что бы не резала глаз (добиться можем как программно так и при помощи резисторов) - тут проблем не возникнет.
2. пока не ясно сколько светодиодов необходимо установить.
одного явно мало, Может 3-5 или сразу 9-10? (тут нужно решить какие эффекты нужны, об этом далее)
3. вся эта котовасия должна будет рассчитывать скорость вращения и зажигать определенные светодиоды в определенное время. (для этого планирую использовать датчик хола)
4. эффекты... тут не хочу изобретать велосипд.
думаю сделать точку/полосочку которая будет плавно вращаться против вращения колеса.
Ели у кого-нибудь есть идеи в плане реализации или эффектов (без фанатизма, не хочу делать ёлку), прошу поделиться.
Реализовано всё будет на Arduino pro mini.
Centrovoy:.. велосипед...
Ели у кого-нибудь есть идеи в плане реализации или эффектов (без фанатизма, не хочу делать ёлку), прошу поделиться.
Реализовано всё будет на Arduino pro mini.
то есть для тебя все придумать сделать
а ты повторишь и скажешь
круто
а нам рассказать как ты сделал слабо?
art100, не горячитесь вы так)
Идея пришла буквально час назад, и её нужно развить, определиться чего и сколько нужно (светодиодов по окружности разместить к примеру).
Достаточно ли будет одного датчика хола? Или нужно 2-3? Т.к. датчиков хола у меня пока нет - буду заказывать.
Прошу высказать своё мнение, и не нужно реализовать всё за меня.
что-то тут затихло
//
int inByte; // message from DLS
char outByte ;
void setup() {
Serial.begin(115200);
}
void loop()
{
delay(150);
if (Serial.available() > 0)
{
inByte = Serial.read();
if (inByte == 83) // S received from David
{
do_scan();
}
if (inByte == 84) // T received from David
{
stop_scan();
}
}
}
void do_scan()
{
Serial.println("scan now"); // send this back
delay(500);
}
void stop_scan()
{
Serial.println("G"); // Send command for grab texture to David
delay(500);
}
попинайте код
что-то тут затихло
попинайте код
// test stepper motors pololulu A4988
// при запуске, мигает свет и мотор несколько раз, после этого крутяться двигатели.
//pins
#define LIGHT_PIN A3//
#define LASER_PIN A4//
#define MS_PIN A5//
#define ENABLE_PIN_0 2//Stepper 1 as labeled on Shield, Turntable
#define STEP_PIN_0 3
#define DIR_PIN_0 4
#define ENABLE_PIN_1 5//Stepper 2, Laser Stepper
#define STEP_PIN_1 6
#define DIR_PIN_1 7
void setup(){
pinMode(LASER_PIN, OUTPUT);
pinMode(LIGHT_PIN, OUTPUT);
pinMode(MS_PIN, OUTPUT);
digitalWrite(MS_PIN, HIGH); //HIGH for 16microstepping, LOW for no microstepping
pinMode(ENABLE_PIN_0, OUTPUT);
pinMode(DIR_PIN_0, OUTPUT);
pinMode(STEP_PIN_0, OUTPUT);
pinMode(ENABLE_PIN_1, OUTPUT);
pinMode(DIR_PIN_1, OUTPUT);
pinMode(STEP_PIN_1, OUTPUT);
digitalWrite(ENABLE_PIN_0, LOW); //HIGH to turn off//enable turntable and laser steppers
digitalWrite(ENABLE_PIN_1, LOW); //HIGH to turn off
//test on start
for(int i=0; i<10; i++){//blink all leds, lights ans the laser 10 times
digitalWrite(ENABLE_PIN_0, HIGH); //HIGH to turn off
digitalWrite(ENABLE_PIN_1, HIGH); //HIGH to turn off
digitalWrite(LIGHT_PIN, 0); //turn light off
digitalWrite(LASER_PIN, 0); //turn laser off
delay(120);
digitalWrite(ENABLE_PIN_0, LOW); //HIGH to turn off
digitalWrite(ENABLE_PIN_1, LOW); //HIGH to turn off
digitalWrite(LIGHT_PIN, 1); //turn light on
digitalWrite(LASER_PIN, 1); //turn laser on
delay(120);
}
}
//loop just steps all four steppers. =================
void loop(){//test allways
digitalWrite(STEP_PIN_0, HIGH);
digitalWrite(STEP_PIN_1, HIGH);
delay(1);
digitalWrite(STEP_PIN_0, LOW);
digitalWrite(STEP_PIN_1, LOW);
delay(1);
}
типовая схема включения

что-то тут затихло
http://yadi.sk/d/sydH7XAzR5NQQ
чудо-щиток чудо-драйвер для шаговых моторов до ампера такой "большой" что между ног у джойстика запутался

типа подпрограмки на будущее
эх сколько не разбрасывай все равно через пол года сам не вспомню что я писал
типа код что-ли поругайте
щиток на arduino от Pololulu A4988
он конечно помикрошагонутестее но и хлипковат он
думаю надо десяточек затарится бо горят как пирожки забытые
// art100 to write 20140523 test stepper motors pololulu A4988
// pins---------------------------------------
// joystick --------------------------
int joypinx = A0; //joystick pin
int joypiny = A1; //joystick pin
int joypinf = A2; //joystick pin
// lasers leds ----------------
int led3 = A4;//3; //
// stepper motors ------------
int dir_Pin1 = 4;//
int stepPin1 = 3;//
#define microstep16pin A5//
#define sleeppin 2//
// constants for joystick -------------------------------------------
int sp1table = 120;// a4988 1000;//slow
int sp2table = 10;// a4988 10000;//a3987 speed
int joyx = 0; //joystick
int joyy = 0; //joystick
int joyf = 0; //joystick
int stepxcor =10;// for correction >0<
int stepycor =10;// for correction >0<
// usb------------------------------
int commandusb = 0; //
//---------------------------
// stepper motor 1 pololulu A4988 -------------------------------
void stepA4988(boolean dir1,int steps1,int msec1){
digitalWrite(dir_Pin1,dir1); // direction
for(int i=0;i<steps1;i++){
digitalWrite(stepPin1,HIGH); delayMicroseconds(msec1);
digitalWrite(stepPin1, LOW); delayMicroseconds(msec1);
}
}
//--------------------------------------------------------------------------------------
void setup(){
pinMode(joypinx, INPUT); //joystick X
pinMode(joypiny, INPUT); //joystick Y
pinMode(joypinf, INPUT_PULLUP); //joystick fire pin
pinMode (led3,OUTPUT); //laser
digitalWrite(led3, HIGH); //
pinMode(dir_Pin1, OUTPUT);//table
pinMode(stepPin1, OUTPUT);//table
pinMode(microstep16pin, OUTPUT);
digitalWrite(microstep16pin, HIGH); //HIGH for 16microstepping, LOW for no microstepping
pinMode(sleeppin, OUTPUT);
Serial.begin(9600);
}
//======================================================================
void loop(){
// joystick ----------------------------------------------------------
joyx = analogRead(joypinx)>>7; // 3 button 0/4/7 0.1.2.3.4.5.6.7 sanks for speed registry shift Dimax
joyy = analogRead(joypiny)>>7; // 3 button 0/4/7 0.1.2.3.4.5.6.7 sanks for speed registry shift Dimax
// Serial.print('X');Serial.print(joyx);Serial.print(';'); Serial.print('Y');Serial.print(joyy);Serial.println(';'); //test
if(joyx==0){stepA4988(false,stepxcor,sp1table);}//speed
if(joyx==7){stepA4988(true ,stepxcor,sp1table);}//speed
if(joyy==0){stepA4988(false,stepxcor,sp2table);}//speed
if(joyy==7){stepA4988(true ,stepxcor,sp2table);}//speed
// led --------------------------------------------------------
if(digitalRead(joypinf)==LOW) { digitalWrite(led3, LOW); } // laser to work
else { digitalWrite(led3,HIGH); } // laser to work
Serial.print("joyx joyy sp1table sp2table: "); Serial.print(joyx);Serial.print(joyy);Serial.println(";");//Serial.print(sp1table);Serial.print(sp2table);Serial.println(";");//
// joystick ----------------------------------------------------------
// usb ----------------------------------------------------------------
if (Serial.available() > 0) {
commandusb = Serial.read();
if (commandusb==76 ) {digitalWrite(led3, HIGH);} // Laser on L
if (commandusb==10
{digitalWrite(led3, LOW);} // laser off l
if (commandusb==45 ) {stepA4988(true, stepycor,sp1table);} // down+
if (commandusb==43 ) {stepA4988(false,stepycor,sp1table);} // up -
Serial.print("commanda usb received: "); Serial.println(commandusb);
}
// usb ----------------------------------------------------------------
}
|
офлайн
ChinaHuman
Senior Member
|
|
|
1541 |
15 лет на сайте Город:
|
Народ, может у кого-нибудь завалялся датчик влажности/температуры типа dht22 (или аналогичный)? Купил бы.
на белчипе спрашивал?
а одной температурой ds19b20 не хватит?
у меня есть лишняя парочка из комплекта 8 шт
не смотрю одну пока вижу свободную
|
офлайн
Неизвестный кот
Neophyte Poster
|
|
|
0 |
Город:
|
ChinaHuman, DHT22 - относительно дорогой датчик, вместо него народ предпочитает брать копеешный DHT11, поэтому вряд ли вы так быстро что-нибудь найдете. Поспрашайте на Барахолке. У меня он один-единственный и используется, так бы уступил.
|
офлайн
ChinaHuman
Senior Member
|
|
|
1541 |
15 лет на сайте Город:
|
К сожалению для меня критична точность измерений (делаю микроклимат для террариума), поэтому DHT11 не подходит.
Заказал в свое время всю комплектуху из Китая, но она затерялась на просторах Белпочты(((