roboforum.ru

Технический форум по робототехнике.

нужна помощь программиста (эмулятор датчика принтера)

нужна помощь программиста (эмулятор датчика принтера)

Alexjustas » 28 май 2013, 23:24

Нужно сделать устройство эмулирующие датчик ширины бумаги в принтере.
датчик-это фотодиод на который когда видит белый цвет бумаги снижает напряжение с 3 вольт примерно до 0.

Самое лучшее было бы чтобы ,одним микроконтроллером считать сигнал.
Записать его во второй , который будет обманкой на самом принтере.
спаяю всё сам

Re: нужна помощь программиста (эмулятор датчика принтера)

Myp » 29 май 2013, 09:28

странное желание
лучше объясни какого эффекта ты хочешь достичь этим "эмулятором"

Re: нужна помощь программиста (эмулятор датчика принтера)

Alexjustas » 29 май 2013, 09:39

Хочу сделать планшетный принтер (печать на любых материалах) из epson. у принтера на печатающей голове стоит датчик ширины листа . когда срабатывает датчик бумаги, лист подходит к голове глаз его видит(проходит по листу ,возвращается в начальное положение , двигает лист назад потом вперед снова его видит и печатает ). при этом меняется напряжение на входе микроконтроллера. я хочу сделать устройство которое бы записывало сигнал с например на комп. а потом этот сигнал можно было бы запихать в другой микроконтроллер уже подключенный к принтеру. тут человек сделал похожее. http://techref.massmind.org/techref/pcb ... 200-vs.htm

Re: нужна помощь программиста (эмулятор датчика принтера)

Myp » 29 май 2013, 10:24

поставь ардуину.
тебе понадобится 2 стандартных примера которые идут в комплекте
первый пример шлёт нажатие кнопки в компьютер, тока вместо кнопки датчик подключишь.
второй пример мигает светодиодом с нужной длительностью, которую ты только что с помощью прошлого примера определил

в первый раз запускаешь с подключенным датчиком и записываешь эталонные срабатывания датчика, в второй раз датчик отключаешь и воспроизводишь эти нажатия.

Re: нужна помощь программиста (эмулятор датчика принтера)

Alexjustas » 29 май 2013, 22:15

Спасибо за подсказку, а какую модель мне можно использовать ?

Re: нужна помощь программиста (эмулятор датчика принтера)

Myp » 30 май 2013, 11:40

любую
рекомендую wiki/ORduino-Nano

Re: нужна помощь программиста (эмулятор датчика принтера)

Alexjustas » 03 июн 2013, 09:48

Может тыкните носом в пример. перечитал кучу всего по ардуино у меня UNO , но сложность для меня . Там по умолчанию постоянно висит 1 на датчике. И как мне записать я незнаю. Я смотрел осцилом , думал посчитать время самому. Но очень геморно. Попробывал считать в serial. Читается но вот тут я затупил . Мне как то нужно вычислить длину. Можно же просто постоянно слать единицу и в нужный момент нули. Там есть алгоритм голова проходит по краю листа , двигает его вперед назад. Поэтому думал считать всё в serial порт и потом скормить arduino. Но как....?

Re: нужна помощь программиста (эмулятор датчика принтера)

Myp » 03 июн 2013, 10:20

стандартный пример DigitalReadSerial
отправляет состояние датчика/кнопки в компьютер. нажал кнопку/сработал датчик и в комп вместо 0 пошла 1
тебе надо лишь в дополнение к Serial.println(buttonState);
добавить кусок кода из http://arduino.cc/en/Reference/millis

Serial.print("; Time: ");
time = millis();
Serial.println(time);

тогда в терминале рядом с изменением состояния, 0 или 1, будет печататься время когда это произошло в миллисекундах с момента запуска ардуины.
сохраняешь то что тебе пришло в эксель удаляешь лишние цифры и высчитываешь задержки.

остаётся написать вторую программу которая будет мигать светодиодом с заданными паузами, вместо светодиода подключишь датчик.

Re: нужна помощь программиста (эмулятор датчика принтера)

Alexjustas » 03 июн 2013, 11:36

Код: Выделить всёРазвернуть
/*
  DigitalReadSerial
Reads a digital input on pin 2, prints the result to the serial monitor

This example code is in the public domain.
*/


int pushButton = 2;


void setup() {
 
  Serial.begin(9600);
 
  pinMode(pushButton, INPUT);
}


void loop() {

  int buttonState = digitalRead(pushButton);
 
  Serial.println(buttonState);
  Serial.print("Time: ");
  time = millis();
 
  Serial.println(time);
 
  delay(1);       
}


Я правильно понимаю ?

Re: нужна помощь программиста (эмулятор датчика принтера)

Myp » 03 июн 2013, 11:45

во первых используй теги!

и да
тока чтобы вывод в терминал выглядел получше, используй вот такую конструкцию Serial.print("; Time: ");
далее в строке Serial.println(buttonState); убери 2 буквы ln чтобы у тебя время не писалось с новой строки, а шло после цифры и не сливалось.
; перед словом Time нужна чтобы потом в экселе проще было разбить данные на 2 столбика.
ну и delay(1); можно сделать не 1, а побольше. с 1 в терминал у тебя вылезет большущая куча данных.

Re: нужна помощь программиста (эмулятор датчика принтера)

Alexjustas » 03 июн 2013, 13:39

/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the serial monitor

This example code is in the public domain.
*/

// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2;

// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// make the pushbutton's pin an input:
pinMode(pushButton, INPUT);
}

// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton);
// print out the state of the button:
Serial.print (buttonState);
Serial.print ("; Time: ");
time = millis();
Serial.println(time);
delay(100); // delay in between reads for stability
}

программа выдает ошибку /забить или что то не так ?
'time' was not declared in scope

DigitalReadSerial.ino: In function 'void loop()':
DigitalReadSerial:26: error: 'time' was not declared in this scope

Re: нужна помощь программиста (эмулятор датчика принтера)

Myp » 03 июн 2013, 14:34

ну да, ошибка, time используем но не декларировали.
надо декларировать.
unsigned long time;

тебе не помощь программиста нужна, тебе надо чтоб вместо тебя всё сделали?

Re: нужна помощь программиста (эмулятор датчика принтера)

Alexjustas » 03 июн 2013, 17:50

Вам огромное спасибо за помощь,Вы как раз меня и направили куда смотреть. Ошибку я нашел сам, но не успел написать Вам. Хочется сделать самому. Но я вообще полный ноль в программировании, но немножко стал врубаться с Вашей помощью.

Добавлено спустя 3 минуты 57 секунд:
Вообще я сначала хотел чтобы за меня сделали(и готов был за это заплатить),но когда Вы мне сказали про arduino решил сам попробовать. Мне сначала приятель обещал помочь ,но я его не дождался. Тупо задинамил.


Rambler\'s Top100 Mail.ru counter