Go Down

Topic: Please help me with "int function()" ! [Solved] (Read 278 times) previous topic - next topic

vacer25

Feb 13, 2013, 12:39 am Last Edit: Feb 13, 2013, 12:53 am by vacer25 Reason: 1
Hello, first of all sorry if i posted this in a wrong section, this is my first post.

Anyway... I am not very experienced with making "int functions()" (the ones outside the main loop)

I'm trying to make a "getKeyboard" function to read the PS/2 keyboard buttons, the code works in the main loop, but when i try to put it into its own function (to make things a lot more organized), it gives me this error message :

Code: [Select]

lcd_Keyboard_Test.cpp: In function 'void loop()':
Lcd_Keyboard_Test:151: error: invalid conversion from 'int (*)()' to 'int'


Here is my code :

Code: [Select]

/*  PS2Keyboard library example
 
 PS2Keyboard now requries both pins specified for begin()

 keyboard.begin(data_pin, irq_pin);
 
 Valid irq pins:
    Arduino:      2, 3
    Arduino Mega: 2, 3, 18, 19, 20, 21
    Teensy 1.0:   0, 1, 2, 3, 4, 6, 7, 16
    Teensy 2.0:   5, 6, 7, 8
    Teensy++ 1.0: 0, 1, 2, 3, 18, 19, 36, 37
    Teensy++ 2.0: 0, 1, 2, 3, 18, 19, 36, 37
    Sanguino:     2, 10, 11
 
 for more information you can read the original wiki in arduino.cc
 at http://www.arduino.cc/playground/Main/PS2Keyboard
 or http://www.pjrc.com/teensy/td_libs_PS2Keyboard.html
 
 Like the Original library and example this is under LGPL license.
 
 Modified by Cuninganreset@gmail.com on 2010-03-22
 Modified by Paul Stoffregen <paul@pjrc.com> June 2010
*/
 
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);    
 
#include <PS2Keyboard.h>

const int DataPin = 20;
const int IRQpin =  21;

int key_in = 0;

int input = 0;
int val = 100;

  byte one[8] = {
 0b00000,
 0b00000,
 0b00000,
 0b00000,
 0b00000,
 0b00000,
 0b00000,
 0b11111
};
  byte two[8] = {
 0b00000,
 0b00000,
 0b00000,
 0b00000,
 0b00000,
 0b00000,
 0b11111,
 0b11111
};
  byte three[8] = {
 0b00000,
 0b00000,
 0b00000,
 0b00000,
 0b00000,
 0b11111,
 0b11111,
 0b11111
};
  byte four[8] = {
 0b00000,
 0b00000,
 0b00000,
 0b00000,
 0b11111,
 0b11111,
 0b11111,
 0b11111
};
  byte five[8] = {
 0b00000,
 0b00000,
 0b00000,
 0b11111,
 0b11111,
 0b11111,
 0b11111,
 0b11111
};
  byte six[8] = {
 0b00000,
 0b00000,
 0b11111,
 0b11111,
 0b11111,
 0b11111,
 0b11111,
 0b11111
};
  byte seven[8] = {
 0b00000,
 0b11111,
 0b11111,
 0b11111,
 0b11111,
 0b11111,
 0b11111,
 0b11111
};
  byte eight[8] = {
 0b11111,
 0b11111,
 0b11111,
 0b11111,
 0b11111,
 0b11111,
 0b11111,
 0b11111
};

PS2Keyboard keyboard;

void setup() {
 
 lcd.begin(16,2);
 
 lcd.createChar(1, one); //send the custom characters to the LCD
 lcd.createChar(2, two); //             ||
 lcd.createChar(3, three);//            ||
 lcd.createChar(4, four);//             ||
 lcd.createChar(5, five);//             ||
 lcd.createChar(6, six);//              ||
 lcd.createChar(7, seven);//            ||
 lcd.createChar(8, eight);//            \/          
 lcd.setCursor(0,0);
 lcd.print ("      LCD      ");  
 lcd.setCursor(0,1) ;
 lcd.print ("   BAR GRAPH   ");  
 delay(1000);
 lcd.clear();
 
 delay(1000);
 keyboard.begin(DataPin, IRQpin);
 Serial.begin(9600);
 Serial.println("Keyboard Test:");
 
 pinMode(10,OUTPUT);
 
}

void loop() {
 
  input = getKeyboard;
 
  val = val + input;
   
  setVal(val);
  printVal(val);
  barGraph(val);
 
}

int getKeyboard()
{
if (keyboard.available()) {
   
    Serial.println("////keyboard available\\\\");
   
  char c = keyboard.read();
   
    if (c == PS2_UPARROW) {
      if(val<100){
    // val++;
    return 1;
     Serial.println("UP arrow pressed");
      }
   }
   else if (c == PS2_DOWNARROW) {
     if(val>0){
   // val--;
   return -1;
    Serial.println("DOWN arrow pressed");
     }
  }  
 
}
}


void setVal(int val) {
 
 val = map(val, 0, 100, 0, 255);
 
 analogWrite(10, val);
 
}

void printVal(int val) {
 
  if(val<10){
lcd.setCursor(2, 0);
lcd.print(val);
lcd.setCursor(0, 0);
lcd.print("  ");
lcd.setCursor(3, 0);
lcd.print("%");
}
if(val>=10 && val < 100){
lcd.setCursor(1, 0);
lcd.print(val);
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(3, 0);
lcd.print("%");
}
if(val>=100){
lcd.setCursor(0, 0);
lcd.print(val);
lcd.setCursor(3, 0);
lcd.print("%");
}
 
 
}  

void barGraph(int val) {
 
 val = map(val, 0, 100, 0, 16);
 
       if(val != 0){
   if(val <= 8){
   lcd.setCursor(15,1);  
   lcd.write(val);  //print out data
   lcd.setCursor(15,0);  
   lcd.print(" ");  //clear out remainder data
   }
     }
   if(val == 0){
     lcd.setCursor(150,1);  
   lcd.print(" ");  //print out data
   lcd.setCursor(15,0);  
   lcd.print(" ");  //clear out remainder data
   }
   
     
   if(val > 8){
   lcd.setCursor(15,1);  
   lcd.write(8);  //print out full block
   lcd.setCursor(15,0);  
   lcd.write(val-8);  //print out remainder data
   }
   
}    

/*

if (c == PS2_ENTER) {
     Serial.println();
   } else if (c == PS2_TAB) {
     Serial.print("     ");
   } else if (c == PS2_ESC) {
     Serial.print("[ESC]");
   } else if (c == PS2_PAGEDOWN) {
     Serial.print("[PgDn]");
   } else if (c == PS2_PAGEUP) {
     Serial.print("[PgUp]");
   } else if (c == PS2_LEFTARROW) {
     Serial.print("[Left]");
   } else if (c == PS2_RIGHTARROW) {
     Serial.print("[Right]");
   } else if (c == PS2_UPARROW) {
     Serial.print("[Up]");
   } else if (c == PS2_DOWNARROW) {
     Serial.print("[Down]");
   } else if (c == PS2_DELETE) {
     Serial.print("[Del]");
     
*/



Here is the part that doesn't work :

Code: [Select]

void loop() {
 
  input = getKeyboard;
 
  val = val + input;
   
  setVal(val);
  printVal(val);
  barGraph(val);
 
}

int getKeyboard()
{
if (keyboard.available()) {
   
    Serial.println("////keyboard available\\\\");
   
  char c = keyboard.read();
   
    if (c == PS2_UPARROW) {
      if(val<100){
    // val++;
    return 1;
     Serial.println("UP arrow pressed");
      }
   }
   else if (c == PS2_DOWNARROW) {
     if(val>0){
   // val--;
   return -1;
    Serial.println("DOWN arrow pressed");
     }
  }  
 
}
}

billroy

Code: [Select]
   input = getKeyboard;

You probably meant to call the function:

Code: [Select]
   input = getKeyboard();

-br

vacer25

Thank you very much I should of thought of that before !

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy