Resistance Color Code

To celebrate the Codea 1.5, I created a program to read the resistance color code. Hope that it will be useful for electronic hobbyists.

-- Resistance Color Code

function setup()
   print("Resistance Color Code")
   parameter.integer("Band",4,6,4)
   parameter.integer("FirstDigit",0,9,0)
   parameter.integer("SecondDigit",0,9,0)
   parameter.integer("ThirdDigit",0,9,0)
   parameter.integer("Multiplier",-2,7,0)
   parameter.integer("Tolerance",-2,7,-2)
   parameter.integer("TempCoeffient",1,4,1)
end

-- This function gets called once every frame
function draw()
   -- This sets a White background color 
   background(255,255,255,255)

   -- Calculate the Resistance Value
   resistval = FirstDigit*10+SecondDigit
   if Band>4 then
       resistval = resistval*10 + ThirdDigit
   end
   resistval = resistval*math.pow(10,Multiplier)
   if resistval>=1000000 then
       r = (resistval/1000000).." M"
   elseif resistval>=1000 then
       r = (resistval/1000).." K"
   else
       r = resistval
   end
   r = r.." ohms"
   if Tolerance==-2 then
       r = r.." +/- 10%"
   elseif Tolerance==-1 then
       r = r.." +/- 5%"
   elseif Tolerance==1 then
       r = r.." +/- 1%"
   elseif Tolerance==2 then
       r = r.." +/- 2%"
   elseif Tolerance==5 then
       r = r.." +/- 0.5%"
   elseif Tolerance==6 then
       r = r.." +/- 0.25%"
   elseif Tolerance==7 then
       r = r.." +/- 0.1%"
   end

   -- Display Title and Resistance Value
   fontSize(30)
   fill(0,0,255, 255)
   textMode(CENTER)
   text("Resistor Color Code",340,730)
   text("R = "..r,340,500)

   -- Draw Resistance 
   posX = 120 
   posY = 600
   resistWidth = 450
   registHight = 100

   -- Set the width of color tag
   tagSpace = 40
   tagWidth = 20   

   stroke(0)
   strokeWidth(10)
   line(50,650,650,650)
   strokeWidth(2)
   fill(0,255,255, 255)
   rect(posX,posY,resistWidth,registHight)

   --Draw First Tag
   fill(getColor(FirstDigit))
   rect(posX+tagSpace,posY,tagWidth,registHight)

   --Draw Second Tag
   fill(getColor(SecondDigit))
   rect(posX+2*tagSpace,posY,tagWidth,registHight)

   --Draw Third Tag
   if Band > 4 then
       fill(getColor(ThirdDigit))
       rect(posX+3*tagSpace,posY,tagWidth,registHight)
   end

   -- Draw Multiplier Tag
   fill(getColor(Multiplier))
   if Band==4 then
       rect(posX+3*tagSpace,posY,tagWidth,registHight)
   else
       rect(posX+4*tagSpace,posY,tagWidth,registHight)
   end

   --Draw Tolerance Tag
   fill(getColor(Tolerance))
   rect(posX+8*tagSpace,posY,tagWidth,registHight)

   --Draw Temperature Coefficient Tag
   if Band == 6 then
       fill(getColor(TempCoeffient))
       rect(posX+9*tagSpace,posY,tagWidth,registHight)
   end

   --Set the parameter related to specific band
   if (Tolerance==0) or (Tolerance==3) or (Tolerance==4) then
       Tolerance =Tolerance+1
   end
   if Band==4 then
       ThirdDigit = 0
       TempCoeffient = 1
   elseif Band == 5 then
       TempCoeffient = 1
   end
end

function getColor(n)
  if n==-2 then
    c = color(161, 161, 161, 255)
  elseif n==-1 then
    c = color(255, 197, 0, 255)
  elseif n==0 then
    c = color(0, 0, 0, 255)
  elseif n==1 then
    c = color(101, 31, 31, 255)
  elseif n==2 then
    c = color(255,0,0, 255)
  elseif n==3 then
    c = color(249, 97, 17, 255)
  elseif n==4 then
    c = color(255, 250, 0, 255)
  elseif n==5 then
    c = color(0, 255, 0, 255)
  elseif n==6 then
    c = color(0, 0, 250, 255)
  elseif n==7 then
    c = color(255, 0, 255, 255)
  elseif n==8 then
    c = color(127, 127, 127, 255)
  elseif n==9 then
    c = color(255, 250, 255, 255)
  end
  return c
end