Hur använda en parameter av varken int/float/char/void som argument?
Jag har en riktigt konstig fråga. Om jag vill använda en parameter i en funktion som argument, men parametern heter t.ex. "fonts_uglib_4x4" t.ex, utan "". Hur gör jag då? Hur kan jag passa denna text "u8g_font_unifont" som argument?
void drawStr(int x, int y, char text[])
{
u8g.setFont(u8g_font_unifont); // set fonts
u8g.drawStr( 0, 22, text); // x, y, text to display
}
Ni ser hur jag har gjort här:
u8g.firstPage();
do {
drawStr(0, 40, "Welcome to first screen");
} while( u8g.nextPage() );
då måste jag skriva 0, 40, u8g_font_unifont, "Welcome to first screen". Som argument. Men det fungerar inte. Hur ska jag göra?
Här är en bit av min kod:
#include <Keypad.h>
#include "U8glib.h"
// Pins for 128X64 LCD
U8GLIB_ST7920_128X64_4X u8g(13, 11, 12); // SCK, MOSI, MISO
// Digital Keypad 4x3
const byte rows = 4; //four rows
const byte cols = 3; //three columns
char keys[rows][cols] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[rows] = {1, 6, 5, 3};
// Connect keypad COL0, COL1 and COL2 to these Arduino pins.
byte colPins[cols] = {2, 0, 4};
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, rows, cols );
void setup()
{
pinMode(13, OUTPUT); // Green LED
digitalWrite(13, 0); // Green LED low
u8g.firstPage();
do {
drawStr(0, 40, "Welcome to first screen");
} while( u8g.nextPage() );
}
void loop()
{
char key = kpd.getKey();
switch (key)
{
case '#':
// do this - Enter a command to console
LED(); // blink
break;
case '*':
// do this - Send a new command to slave
LED(); // blink
break;
default:
break;
}
}
void drawStr(int x, int y, char text[])
{
u8g.setFont(u8g_font_unifont); // set fonts
u8g.drawStr( 0, 22, text); // x, y, text to display
}
float input_display()
{
char abcd[4]; // create a array_char for input
//mydisplay.clearDisplay(0); // clear display
for(int i = 0; i <= 3; i++)
{
abcd[i]= kpd.waitForKey(); // add one char
if (abcd[i] == '*' || abcd[i] == '#') // compare
{
// End of the loop
// make abcd_int[] into one number and return it
LED(); // blink
//mydisplay.clearDisplay(0); // clear display
return atoi(abcd);
}
else
{
//mydisplay.setDigit(0, i, abcd[i] - '0', false); // show on display
digitalWrite(13, 0); // LED green OFF
}
}
// End of the loop
digitalWrite(13, 0); // LED green OFF
boolean key = true;
while(key == true)
{
if (kpd.getKey() == '#')
{
key = false; // breake
}
else
{
key == true; // continue untill pressed '#'
}
}
LED(); // blink
//mydisplay.clearDisplay(0); // clear display
// make abcd_int[] into one number and return it
return atoi(abcd);
}
// Blink Green LED
void LED()
{
int A = 1;
for (int i = 0; i <= 10; i++)
{
digitalWrite(13, A);
delay(100);
if (A == 1)
{
A = 0;
}
else
{
A = 1;
}
}
}