|
|
Wow, I thought this list was dead.
Hmmm. You're missing two key bits of information :
1) Do you want to individually control each LED's brightness?
2) How often do you wish to change the brightness?
If you are attempting to make a television like display its a lot harder
than if you're making simply a LED sign.
--Chuck
At 11:37 AM 2/29/2004, Claudia Bernett wrote:
> hi.
>
> i'm working in a project in which i'll need to control the brightness of about
> 700 leds. i've just begun to research solutions - and i'm not sure the hb is
> the right microcontroller for the job, but i thought perhaps an hb user on
> this
> list would have some relevant experience and could perhaps point me in the
> direction of the right hardware/software combination. it seems as though i'll
> need multiple microcontrollers, and additional hardware to manage the
> control of
> a large numbers of leds.
>
> the MAX6954 4-Wire Interfaced, 2.7V to 5.5V LED Display Driver with I/O
> Expander
> and Key Scan made by maxim-ic was suggested as a possibility - if anyone is
> familiar with it.
>
> http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3410
>
> separate but related, i'll need the software running on the mc to be able to
> return the current time, down to seconds. i know system time is available on
> the hb, but gets reset everytime the device is rebooted. so - if there
> are any
> suggestions regarding a solution for this piece as well it would be much
> appreciated.
>
> thanks in advance,
> claudia
|
|
|
hi.
i'm working in a project in which i'll need to control the brightness of about
700 leds. i've just begun to research solutions - and i'm not sure the hb is
the right microcontroller for the job, but i thought perhaps an hb user on this
list would have some relevant experience and could perhaps point me in the
direction of the right hardware/software combination. it seems as though i'll
need multiple microcontrollers, and additional hardware to manage the control of
a large numbers of leds.
the MAX6954 4-Wire Interfaced, 2.7V to 5.5V LED Display Driver with I/O Expander
and Key Scan made by maxim-ic was suggested as a possibility - if anyone is
familiar with it.
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3410
separate but related, i'll need the software running on the mc to be able to
return the current time, down to seconds. i know system time is available on
the hb, but gets reset everytime the device is rebooted. so - if there are any
suggestions regarding a solution for this piece as well it would be much
appreciated.
thanks in advance,
claudia
|
|
|
Hello,
we are using Lego reflectance sensors for an experiment and the HB is
showing a rather strange behavior. If we plug a single sensor in the
expansion board, it works fine, but when two of them are connected, then
none of them work. Even more, if the single sensor reading is 200 decreases over
185 when the second one is connected, without any change in sensor position. We
tried the 4 lego sensor inputs and nothing changes. We are
sure that it is not a sensor problem, but what is it then? any idea?
thanks!
|
|
|
Hello,
when I switch the HB on, first both -- batt and pow -- lights are on for a
second and inmediatelly, both become off again. The U13 voltage regulator
gets very hot in few seconds. I've changed that unit but there is no change in
the board's behavior. I think the board is shortcircuited some where, but
where?
thanks!
|
|
|
Hi, all:
I am a new user of Handy board. And I have a problem with assembling the
Compass sensor and Ultrasonic Range Finder.
Compass sensor's model is CMPS03 and Ultrasonic Range Finder is
SRF04(Please visit http://www.robotstorehk.com/sensor.html for more
details). And I find that I could not assembly those sensors in a normal
way. Can anyone told me how to assembly them ?
My Handyboard is HB-A-IC-DB9(Please visit
http://www.robotstorehk.com/handyboard.html for more details), that is the
board which without expansion board.
Actually, my aims is only let the robot can use compass sensor, ultrasonic
range finder, and somethings else that I have already success assembly them.
If there are another models of those sensors that is more suitable for
Handyboard, please told me in detail.
Please reply to my email address: navypcms@yahoo.com.hk
--
best regards,
¤×³½
|
|
|
Hello,
I have problems while trying to read the lego rotation sensor using the
expansion board. I include the "Explego.icb" file and read the counter
using lego$i_counts variable. I have tested the program with the same sensor
in a different HB and it works fine.
Any hint?
thanks!
|
|
|
HI!
Actually i am having Problem while working on my
robatics projcet,actually my motors takes 3Amp
under load
i am using handyboard for this,so when the motors
operate under load it stop working and the IC(LM293D)
gets hot, so if any body can help me i would be tahankful to him
with best regards
Ahmad kamal NAsir
|
|
|
Hi!
I am having a problem with using IC
actually i am using handy board for a
robatic project.
Problem:
i want to use handy board knob
fuction which return integer value.
so when i assign this value to float variable
which i wanna used ,it don't work and gives me error
so my question is how i can convert integer value to
float so that i can use knob function.
if you really help me i would be very thankful to you.
with Regard
Nasir.
|
|
|
Hi,
I'm using the handyboard for a robotics competition, and I have been having
a problem when I use my compass and sonar together.
I am using a Daventech SRF04 ultrasonic ranger, and a Daventech compass.
Here is the problem: I can read the sonar using the library I have attached at
the end, and it all works fine until I start reading the compass. I can
continue reading the compass for as long as I want (and get accurate readings),
However the sonar routines no longer return when I call them. I use a
pulsewidth mesuring routine I found on an old handyboard mailing list to
measure the compass. I suspect an interrupt problem, but I don't know enought
assembly to know what is wrong.
Jeff
*************************
* SONAR LIBRARY V1.0 *
* December 29, 2001 *
* by Willem van Asperen *
* wasperen@hotmail.com *
*************************
ORG MAIN_START
* program equates
USERLATCH EQU $5000 ; defined in libexpbd.asm
USERVAL EQU $32 ; defined in libexpbd.asm
BASE EQU $1000
OUTBIT6SET EQU %01000000 ; expansion board digtal output bit 6
OUTBIT5SET EQU %00100000 ; expansion board digtal output bit 5
OUTBIT4SET EQU %00010000 ; expansion board digtal output bit 4
OUTBITSRES EQU %10001111 ; mask to reset both output bits
TCNT EQU $100E ; timer base count register
TCTL2 EQU $1021 ; timer control register 2
TMSK1 EQU $1022 ; timer interrupt mask register 1
TFLG1 EQU $1023 ; timer interrupt flag register 1
TMSK2 EQU $1024 ; timer interrupt mask register 2
TFLG2 EQU $1025 ; timer interrupt flag register 2
TIC3 EQU $1014 ; timer input capture value
TIC3INT EQU $BFEA ; Timer Input Capture 3 interrupt vector
TFLGIC3 EQU %00000001 ; timer 3 flags
IC3OFF EQU %11111100
IC3FALL EQU %00000010
IC3RISE EQU %00000001
DONE EQU $FFFF
tmp FDB 0
variable_sonar_distance0 FDB 0 ; latest measurements
variable_sonar_distance1 FDB 0
variable_sonar_distance2 FDB 0
variable_sonar_status FDB DONE
OUTBITS FCB OUTBIT4SET ; expansion board output bits
FCB OUTBIT5SET
FCB OUTBIT6SET
subroutine_initialize_module:
LDX #BASE
LDAA #OUTBITSRES ; make both output bits zero
ANDA USERVAL
STAA USERLATCH
STAA USERVAL
LDD #ping_return ; install interrupt vector
STD TIC3INT
BSET TCTL2,X #IC3FALL ; tell IC3 to respond to falling edge
BSET TMSK1,X #TFLGIC3 ; enable interrupt at IC3
RTS
*********************************
* subroutine _sonar_ping(in) *
* in : AB = 0 or 1 *
* out: AB = current timer value *
*********************************
subroutine__sonar_ping:
STD variable_sonar_status
LDX #OUTBITS ; point X to relevant bit patern for output
ABX
LDAA 0,X ; pulse high on out bit
ORAA USERVAL
STAA USERLATCH
STAA USERVAL
LDAA 0,X ; pulse low on out bit
COMA
ANDA USERVAL
STAA USERVAL
STAA USERLATCH
LDD TCNT ; store current time
STD tmp
RTS
ping_return:
LDD variable_sonar_status ; make X point to relevant result variable
ASLB
ADDD #variable_sonar_distance0
XGDX
LDD TIC3 ; calculate and store travel time
SUBD tmp
STD 0,X
LDAA #TFLGIC3 ; reset flag IC3
STAA TFLG1
LDD #DONE ; reset status
STD variable_sonar_status
RTI
/*end sonar lib*/
*****************************************************************
* Programm to measure a pulsewidth with the TIC2 port of
* the 68HC11
*
*
* |---------| |----------
* -------| |-----------|
*
* |<------->| pulsewidth
*
*
* Programm written for Pacificar-Project TWI, Switzerland
* by Thomas Hauri and Beat Buchmann
*
* Version 1.0
*
* last changes : 02 Okt 1997
*
* History : 06.03.97 : realizing testversion to test Handyboard
interrupt
* features
*
* : 02.10.97 : added and adjustetd some things to run with
* expansionboard
*
*
******************************************************************
* used registers
*****************
BASE EQU $1000
PORTA EQU $1000 * Port A data register
CFORC EQU $100B * Timer Compare Force Register
OC1M EQU $100C * Output Compare 1 Mask register
OC1D EQU $100D * Output Compare 1 Data register
TCNT EQU $100E * Timer Count Register
TIC2 EQU $1012 * Timer Input Capture register 2
TIC3 EQU $1014 * Timer Input Capture register 3
TOC3 EQU $101A * Timer Output Compare register 3
TCTL1 EQU $1020 * Timer Control register 1
TCTL2 EQU $1021 * Timer Control register 2
TMSK1 EQU $1022 * main Timer interrupt Mask register 1
TFLG1 EQU $1023 * main Timer interrupt Flag register 1
HPRIO EQU $103C * Highest Priority Interrupt and misc
TIC2INT EQU $EC * Timer Input Capture 2
TIC3INT EQU $EA * Timer Input Capture 3
TOC4INT EQU $E2 * Timer Input Capture 4
* addresses and masks
pos_edge_02 EQU %00000100 * Select positiv edge to detect
%0000xx00 on TIC2
neg_edge_02 EQU %00001000 * Select negativ edge to detect
%0000xx00 on TIC2
pos_edge_03 EQU %00000001 * Select positiv edge to detect
%000000xx on TIC3
neg_edge_03 EQU %00000010 * Select negativ edge on TIC3
tmsk1_flag_02 EQU %00000010 * using TIC2
tflg1_mask_02 EQU %11111101 * capture mask
tmsk1_mask_02 EQU %11111101 * used to disable TIC2 interrupt
tmsk1_flag_03 EQU %00000001 * using TIC3
tflg1_mask_03 EQU %11111110 * capture mask
tmsk1_mask_03 EQU %11111110 * used to disable TIC3 interrupt
ORG MAIN_START
* variables
************
local_counter FCB 0
temp FDB 0
run FCB 0
integrator FDB 0
variable_pulsewidth2 FDB 0
variable_pulse_done2 FDB 0
*************************************************************************
* initialization start
*************************************************************************
subroutine_initialize_module:
* include of ldxibase.asm
LDAA HPRIO
ANDA #$40 * test SMOD bit
BNE *+7
LDX #$FF00 * normal mode interrupts
BRA *+5
LDX #$BF00 * special mode interrupts
* Lets now install the interrupt routine into the TIC3 interrrupt
LDD TIC2INT,X
STD interrupt_code_exit+1
LDD #interrupt_code_start
STD TIC2INT,X
BCLR TFLG1-BASE,X tflg1_mask_02 * Clear TIC2 Bit in TFLG1
BCLR TMSK1-BASE,X tmsk1_flag_02 * Clear TIC2 Bit in TMSK1
RTS
*************************************************************************
* subroutine get_wavelength: starts measuring the wavelength
*
* inputs : must be 1
*
*************************************************************************
subroutine_get_pulsewidth2:
equal_one:
LDAA #1
STAA local_counter
go_on:
LDX #BASE
LDAA #pos_edge_02
STAA TCTL2-BASE,X * set hot_edge in Timer Control Register
LDD #0
STD integrator
STD variable_pulse_done2
LDAB #1
STAB run
LDD #$ffff * set pulsewidth to 65ms
STD variable_pulsewidth2
BCLR TFLG1-BASE,X tflg1_mask_02 * Clear TIC2 Bit in TFLG1
BSET TMSK1-BASE,X tmsk1_flag_02 * SET TIC2 Bit in TMSK1 (enable
interrupts)
RTS
*************************************************************************
* END measurement routine
*************************************************************************
*************************************************************************
* implementation of interrupt routine
*************************************************************************
interrupt_code_start:
LDAA run
BEQ interrupt_code_exit
CMPA #2
BHS second
first:
LDD TIC2 * take time at first rising edge of measurement
STD temp
INC run * set run -> next time interrupt is called
LDX #BASE
LDAA #neg_edge_02
STAA TCTL2-BASE,X * set hot_edge in Timer Control Register
BRA end * routine second will be called instead of
routine first
second:
LDD TIC2 * take time at following rising edge
SUBD temp * subtract times to get wavelength in 0.5 us
LSRD * divide by two to get the unit us and to avoid
* negative numbers from timer overflows
ADDD integrator * add length to integrator, which is used to
STD integrator * calculate the mean wavelength over 4
measurements
LDAB #1 * reset run
STAB run
end:
LDX #BASE
BCLR TFLG1-BASE,X tflg1_mask_02 * Clear TIC2 Bit in TFLG1
LDAA local_counter * check if end of measurement
BEQ stop_interrupt
DEC local_counter
BRA interrupt_code_exit
stop_interrupt:
BCLR TMSK1-BASE,X tmsk1_flag_02 * Clear TIC2 Bit in TMSK1(disable
interrupts)
CLR run
done:
LDD #1
STD variable_pulse_done2
LDD integrator
STD variable_pulsewidth2 * give back to Interactive C
interrupt_code_exit:
JMP $0000 * this is the end of the routine this value poked by
init routine
*************************************************************************
/*end pulsewidth lib*/
|
|
|