Ichwürde es auch über Interrupts machen wollen.
Allerdings sollte man dran denken, den Schalter zu entprellen.

Ich würde im Interrupt nur ein Flag setzen und den eigentlichen Print auftrag in der Hauptroutine starten.

In die Interruptroutine sollte dann eine Abfrage mit rein, die nach einer Aktivierung für 10..20ms kein neues Setzen des "Print" Flags erlaubt.

Dadurch wird die Interruptroutine schön kurz und nicht durch wait's oder debounce blockiert.