قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

sherifkmal
:: مهندس ::
تاريخ التسجيل: Feb 2005
المشاركات: 22
نشاط [ sherifkmal ]
قوة السمعة:0
قديم 23-05-2014, 01:27 AM المشاركة 1   
افتراضي اساتذة القرية المساعدة برنتر ماتركس epson m150 Twitter FaceBook Google+



بسم الله الرحمن الرحيم
طلب من اساتذة القرية ان تفيدونى فى كيفية التعامل مع هذه البرنتر
1)- الدرايفر
2)- الكود بالميكرو سي لل pic mcu



هذا فيديو لها مع الاردوينو
https://www.youtube.com/watch?v=yWz-9c-KAus

الداتا شيت

http://www.farnell.com/datasheets/77312.pdf

ولكم جزيل االشكر يا أهل القرية واعرف انكم لن تبخلوا على أو على أى طالب علم

اعلانات

sherifkmal
:: مهندس ::
تاريخ التسجيل: Feb 2005
المشاركات: 22
نشاط [ sherifkmal ]
قوة السمعة:0
قديم 24-05-2014, 09:03 PM المشاركة 2   
افتراضي epson m-150 impact printer


لن أصاب باليأس واكرر طلبى واعلم اننى طرحت الموضوع فى منتدى يتواجد به عمالقة ومهندسين عظام واثق ان طلبى سيجد من يهتم به
وشكرا لما قدمتموه وتقدموه من عطاء

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

sherifkmal
:: مهندس ::
تاريخ التسجيل: Feb 2005
المشاركات: 22
نشاط [ sherifkmal ]
قوة السمعة:0
قديم 28-05-2014, 03:48 AM المشاركة 3   
افتراضي epson m-150 impact printer


من يعطينى الحل يستاهل 250 جنية برجاء الاهتمام


sherifkmal
:: مهندس ::
تاريخ التسجيل: Feb 2005
المشاركات: 22
نشاط [ sherifkmal ]
قوة السمعة:0
قديم 29-05-2014, 04:05 AM المشاركة 4   
افتراضي شكلها صعبة


شكلها صعبة بس انا ثقتى فى مهندسين القرية كبيرة



sherifkmal
:: مهندس ::
تاريخ التسجيل: Feb 2005
المشاركات: 22
نشاط [ sherifkmal ]
قوة السمعة:0
قديم 30-05-2014, 05:25 AM المشاركة 5   
افتراضي الكود


m190printer.h

كود:
#ifndef M190PRINTER_H
#define M190PRINTER_H
// Copyright 2013 Steven Pearson
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

#include <Arduino.h>

namespace m190{
  const int PIN_MOTOR = 4;
  const int PIN_RESET = 2;
  const int PIN_TIMING = A0;

  const int PIN_SOLA = 5;
  const int PIN_SOLB = 6;
  const int PIN_SOLC = 7;
  const int PIN_SOLD = 8;
  const int PIN_SOLE = 9;
  const int PIN_SOLF = 10;
  const int PIN_SOLG = 11;
  const int PIN_SOLH = 12;

  typedef boolean (*pixelsource)(void *ctx,int x,int y);

  void initialize();
  void formfeed(int rows);
  void print(pixelsource s,void *ctx,int rows,boolean overlap);
  void print(char *x);
  void print(const __FlashStringHelper *msg);
  void printP(const byte *bitmap,int w,int h);
}

#endif
الكود للاردوينو

كود:
// Copyright 2013 Steven Pearson
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

#include <m190printer.h>
#include <avr/pgmspace.h>

static const byte ASCII[] PROGMEM =
{
 0x00, 0x00, 0x00, 0x00, 0x00 // 20
,0x00, 0x00, 0x5f, 0x00, 0x00 // 21 !
,0x00, 0x07, 0x00, 0x07, 0x00 // 22 "
,0x14, 0x7f, 0x14, 0x7f, 0x14 // 23 #
,0x24, 0x2a, 0x7f, 0x2a, 0x12 // 24 $
,0x23, 0x13, 0x08, 0x64, 0x62 // 25 %
,0x36, 0x49, 0x55, 0x22, 0x50 // 26 &
,0x00, 0x05, 0x03, 0x00, 0x00 // 27 '
,0x00, 0x1c, 0x22, 0x41, 0x00 // 28 (
,0x00, 0x41, 0x22, 0x1c, 0x00 // 29 )
,0x14, 0x08, 0x3e, 0x08, 0x14 // 2a *
,0x08, 0x08, 0x3e, 0x08, 0x08 // 2b +
,0x00, 0x50, 0x30, 0x00, 0x00 // 2c ,
,0x08, 0x08, 0x08, 0x08, 0x08 // 2d -
,0x00, 0x60, 0x60, 0x00, 0x00 // 2e .
,0x20, 0x10, 0x08, 0x04, 0x02 // 2f /
,0x3e, 0x51, 0x49, 0x45, 0x3e // 30 0
,0x00, 0x42, 0x7f, 0x40, 0x00 // 31 1
,0x42, 0x61, 0x51, 0x49, 0x46 // 32 2
,0x21, 0x41, 0x45, 0x4b, 0x31 // 33 3
,0x18, 0x14, 0x12, 0x7f, 0x10 // 34 4
,0x27, 0x45, 0x45, 0x45, 0x39 // 35 5
,0x3c, 0x4a, 0x49, 0x49, 0x30 // 36 6
,0x01, 0x71, 0x09, 0x05, 0x03 // 37 7
,0x36, 0x49, 0x49, 0x49, 0x36 // 38 8
,0x06, 0x49, 0x49, 0x29, 0x1e // 39 9
,0x00, 0x36, 0x36, 0x00, 0x00 // 3a :
,0x00, 0x56, 0x36, 0x00, 0x00 // 3b ;
,0x08, 0x14, 0x22, 0x41, 0x00 // 3c <
,0x14, 0x14, 0x14, 0x14, 0x14 // 3d =
,0x00, 0x41, 0x22, 0x14, 0x08 // 3e >
,0x02, 0x01, 0x51, 0x09, 0x06 // 3f ?
,0x32, 0x49, 0x79, 0x41, 0x3e // 40 *
,0x7e, 0x11, 0x11, 0x11, 0x7e // 41 A
,0x7f, 0x49, 0x49, 0x49, 0x36 // 42 B
,0x3e, 0x41, 0x41, 0x41, 0x22 // 43 C
,0x7f, 0x41, 0x41, 0x22, 0x1c // 44 D
,0x7f, 0x49, 0x49, 0x49, 0x41 // 45 E
,0x7f, 0x09, 0x09, 0x09, 0x01 // 46 F
,0x3e, 0x41, 0x49, 0x49, 0x7a // 47 G
,0x7f, 0x08, 0x08, 0x08, 0x7f // 48 H
,0x00, 0x41, 0x7f, 0x41, 0x00 // 49 I
,0x20, 0x40, 0x41, 0x3f, 0x01 // 4a J
,0x7f, 0x08, 0x14, 0x22, 0x41 // 4b K
,0x7f, 0x40, 0x40, 0x40, 0x40 // 4c L
,0x7f, 0x02, 0x0c, 0x02, 0x7f // 4d M
,0x7f, 0x04, 0x08, 0x10, 0x7f // 4e N
,0x3e, 0x41, 0x41, 0x41, 0x3e // 4f O
,0x7f, 0x09, 0x09, 0x09, 0x06 // 50 P
,0x3e, 0x41, 0x51, 0x21, 0x5e // 51 Q
,0x7f, 0x09, 0x19, 0x29, 0x46 // 52 R
,0x46, 0x49, 0x49, 0x49, 0x31 // 53 S
,0x01, 0x01, 0x7f, 0x01, 0x01 // 54 T
,0x3f, 0x40, 0x40, 0x40, 0x3f // 55 U
,0x1f, 0x20, 0x40, 0x20, 0x1f // 56 V
,0x3f, 0x40, 0x38, 0x40, 0x3f // 57 W
,0x63, 0x14, 0x08, 0x14, 0x63 // 58 X
,0x07, 0x08, 0x70, 0x08, 0x07 // 59 Y
,0x61, 0x51, 0x49, 0x45, 0x43 // 5a Z
,0x00, 0x7f, 0x41, 0x41, 0x00 // 5b [
,0x02, 0x04, 0x08, 0x10, 0x20 // 5c ¥
,0x00, 0x41, 0x41, 0x7f, 0x00 // 5d ]
,0x04, 0x02, 0x01, 0x02, 0x04 // 5e ^
,0x40, 0x40, 0x40, 0x40, 0x40 // 5f _
,0x00, 0x01, 0x02, 0x04, 0x00 // 60 `
,0x20, 0x54, 0x54, 0x54, 0x78 // 61 a
,0x7f, 0x48, 0x44, 0x44, 0x38 // 62 b
,0x38, 0x44, 0x44, 0x44, 0x20 // 63 c
,0x38, 0x44, 0x44, 0x48, 0x7f // 64 d
,0x38, 0x54, 0x54, 0x54, 0x18 // 65 e
,0x08, 0x7e, 0x09, 0x01, 0x02 // 66 f
,0x0c, 0x52, 0x52, 0x52, 0x3e // 67 g
,0x7f, 0x08, 0x04, 0x04, 0x78 // 68 h
,0x00, 0x44, 0x7d, 0x40, 0x00 // 69 i
,0x20, 0x40, 0x44, 0x3d, 0x00 // 6a j
,0x7f, 0x10, 0x28, 0x44, 0x00 // 6b k
,0x00, 0x41, 0x7f, 0x40, 0x00 // 6c l
,0x7c, 0x04, 0x18, 0x04, 0x78 // 6d m
,0x7c, 0x08, 0x04, 0x04, 0x78 // 6e n
,0x38, 0x44, 0x44, 0x44, 0x38 // 6f o
,0x7c, 0x14, 0x14, 0x14, 0x08 // 70 p
,0x08, 0x14, 0x14, 0x18, 0x7c // 71 q
,0x7c, 0x08, 0x04, 0x04, 0x08 // 72 r
,0x48, 0x54, 0x54, 0x54, 0x20 // 73 s
,0x04, 0x3f, 0x44, 0x40, 0x20 // 74 t
,0x3c, 0x40, 0x40, 0x20, 0x7c // 75 u
,0x1c, 0x20, 0x40, 0x20, 0x1c // 76 v
,0x3c, 0x40, 0x30, 0x40, 0x3c // 77 w
,0x44, 0x28, 0x10, 0x28, 0x44 // 78 x
,0x0c, 0x50, 0x50, 0x50, 0x3c // 79 y
,0x44, 0x64, 0x54, 0x4c, 0x44 // 7a z
,0x00, 0x08, 0x36, 0x41, 0x00 // 7b {
,0x00, 0x00, 0x7f, 0x00, 0x00 // 7c |
,0x00, 0x41, 0x36, 0x08, 0x00 // 7d }
,0x10, 0x08, 0x08, 0x10, 0x08 // 7e ?
,0x78, 0x46, 0x41, 0x46, 0x78 // 7f ?
};

boolean isTick(){
  static int flipflop=0;
  static int lastval=0;

  int val=analogRead(m190::PIN_TIMING);

  boolean tickfound=false;

  if(flipflop==0){
    if( val < lastval ){
      flipflop=1;
      tickfound=true;
    }
  } else {
    if( val > lastval ){
      flipflop=0;
      tickfound=true;
    }
  }

  lastval=val;

  return tickfound;
}

boolean isReset(){
  static int armed=0;
  static unsigned long armedTime=0;

  int val = digitalRead(m190::PIN_RESET);
  unsigned long now=micros();

  if( val == HIGH ){
    switch( armed ){
      case 0:
        armedTime=now;
        armed=1;
        break;
      case 1:
        if(now-armedTime >= 54ul ){
          armed=2;
          return true;
        }
        break;
      case 2:
        //We already fired
        break;
    }
  }
  else {
    armed=0;
  }

  return false;
}

void m190::initialize(){
  pinMode(PIN_MOTOR,OUTPUT);
  pinMode(PIN_RESET,INPUT);
  pinMode(PIN_SOLA,OUTPUT);
  pinMode(PIN_SOLB,OUTPUT);
  pinMode(PIN_SOLC,OUTPUT);
  pinMode(PIN_SOLD,OUTPUT);
  pinMode(PIN_SOLE,OUTPUT);
  pinMode(PIN_SOLF,OUTPUT);
  pinMode(PIN_SOLG,OUTPUT);
  pinMode(PIN_SOLH,OUTPUT);
}

boolean formfeedsource(void *ctx,int x,int y){
  return 0;
}

void m190::print(pixelsource source,void *ctx,int rows,boolean overlap){

  digitalWrite(PIN_MOTOR,HIGH);
  //TODO: validate we get 90 ticks
  int spinup=2;
  while(spinup>0){
    if( isReset() ){
      spinup--;
    }
  }

  int firsttick=3;
  int maxticks=overlap?60:54;

  int y=0;
  int ticks=0;
  while(y<rows){
    if( isTick() ){
      ticks++;
    }
    if( isReset() ){
      ticks=0;
      y++;
    }

    //We are in the printing range
    if( ticks >=firsttick && ticks <=maxticks ){
      int pos = ticks-firsttick;
      int x=pos/3;
      int solgroup = pos%3;

      //Only power 3 solenoids max at a time
      digitalWrite(PIN_SOLA,solgroup==0&&source(ctx,x,y));
      digitalWrite(PIN_SOLB,solgroup==1&&source(ctx,x+18,y));
      digitalWrite(PIN_SOLC,solgroup==2&&source(ctx,x+36,y));

      digitalWrite(PIN_SOLD,solgroup==0&&source(ctx,x+54,y));
      digitalWrite(PIN_SOLE,solgroup==1&&source(ctx,x+72,y));
      digitalWrite(PIN_SOLF,solgroup==2&&source(ctx,x+90,y));

      digitalWrite(PIN_SOLG,solgroup==1&&source(ctx,x+108,y));
      digitalWrite(PIN_SOLH,solgroup==2&&source(ctx,x+126,y));

    } else {
      digitalWrite(PIN_SOLA,LOW);
      digitalWrite(PIN_SOLB,LOW);
      digitalWrite(PIN_SOLC,LOW);
      digitalWrite(PIN_SOLD,LOW);
      digitalWrite(PIN_SOLD,LOW);
      digitalWrite(PIN_SOLE,LOW);
      digitalWrite(PIN_SOLF,LOW);
      digitalWrite(PIN_SOLG,LOW);
      digitalWrite(PIN_SOLH,LOW);
    }
  }

  //Turn off all solenoids
  digitalWrite(PIN_SOLA,LOW);
  digitalWrite(PIN_SOLB,LOW);
  digitalWrite(PIN_SOLC,LOW);
  digitalWrite(PIN_SOLD,LOW);
  digitalWrite(PIN_SOLD,LOW);
  digitalWrite(PIN_SOLE,LOW);
  digitalWrite(PIN_SOLF,LOW);
  digitalWrite(PIN_SOLG,LOW);
  digitalWrite(PIN_SOLH,LOW);
  //stop the motor
  digitalWrite(PIN_MOTOR,LOW);
}

void m190::formfeed(int rows){
  m190::print(formfeedsource,NULL,rows,false);
}

struct stringcontext{
  const char *str;
  int len;
};

unsigned char getCharPixel(char c,int x,int y){
  //character and line spaces
  if( x>=5 || y >=7){
    return 0;
  }

  byte b = pgm_read_byte(ASCII+((c - 0x20)*5)+x);

  return b&(1<<y);
}

unsigned char getStringPixel(const char *c,int l,int x,int y){
  //What character does this x and y coord relate to

  int lpos = y/8;
  int ypos = y%8;
  int cpos = (lpos*24)+(x/6);
  if( cpos >= l ){
    return 0;
  }
  int ppos = x%6;

  return getCharPixel(c[cpos],ppos,ypos);
}

boolean stringsource(void *ctx,int x,int y){
  stringcontext *sctx = (stringcontext *)ctx;

  return getStringPixel(sctx->str,sctx->len,x,y);
}

void m190::print(char *str){

  stringcontext ctx;
  ctx.str=str;
  ctx.len=strlen(str);

  int reqrows = ((ctx.len/24)+1)*8;


  print(stringsource,&ctx,reqrows,false);
}

unsigned char getStringPixelP(const char *c,int l,int x,int y){
  //What character does this x and y coord relate to

  int lpos = y/8;
  int ypos = y%8;
  int cpos = (lpos*24)+(x/6);
  if( cpos >= l ){
    return 0;
  }
  int ppos = x%6;

  return getCharPixel(pgm_read_byte(c+cpos),ppos,ypos);
}

boolean stringsourceP(void *ctx,int x,int y){
  stringcontext *sctx = (stringcontext *)ctx;

  return getStringPixelP(sctx->str,sctx->len,x,y);
}

void m190::print(const __FlashStringHelper *msg){

  stringcontext ctx;
  ctx.str=(const char PROGMEM *)msg;
  ctx.len=strlen_P(ctx.str);

  int reqrows = ((ctx.len/24)+1)*8;


  print(stringsourceP,&ctx,reqrows,false);
}


struct bitmapcontext{
  const byte *bitmap;
  int w;
  int h;
};

boolean bitmapsource(void *ctx,int x,int y){
  bitmapcontext *bctx=(bitmapcontext *)ctx;

  int xbyte = x/8;
  int xbit = x%8;

  int pos = (bctx->w*y)+xbyte;
  int val = pgm_read_byte(bctx->bitmap+pos);
  return val & 1<<xbit;
}

void m190::printP(const byte *bitmap,int w,int h){
  bitmapcontext ctx;
  ctx.bitmap=bitmap;
  ctx.w=w;
  ctx.h=h;

  print(bitmapsource,&ctx,h,true);
}

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 05:23 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025